src/protocols/oscar/oscar.c

Mon, 25 Aug 2003 02:49:42 +0000

author
Robert McQueen <robot101@debian.org>
date
Mon, 25 Aug 2003 02:49:42 +0000
changeset 6621
2a18ef3e5224
parent 6498
23d2fd361db6
child 6622
277eb0b14653
permissions
-rw-r--r--

[gaim-migrate @ 7145]
Individual accounts remember the "No Proxy" setting instead of reverting
back to "Use Global Proxy Settings"

Proxy settings for individual accounts do not revert to "No Proxy" if
you open an account, don't change the proxy drop down, then save the
account.

Those two sound like the same thing, but they're different. I think.

Added the "use environmental variables" setting in a way that isn't
horrible.

We're not using that thing that splits the proxy variable into
host:port yet. I'll do that later. I would have done that
earlier, but I had to go buy a bike.

Also, I'd like to show what the environmental variables are set to
somewhere. That'll come later.


Also a patch from Robot101:
(22:10:25) Bzubhipheron: I have a patch that replaces #define WFLAG_* with
GaimMessageFlags GAIM_MESSAGE_*
(22:10:30) Bzubhipheron: (an enum in disguise)
(22:14:18) Bzubhipheron: GaimMessageFlags protrays much better typing
information than "int". most of the other #defines are gone, and glib
standardises on enums for its flags too.
(22:14:27) Bzubhipheron: (gone or going)
(22:14:45) Bzubhipheron: and it makes the prototype of my message queueing stuff prettier.

committer: Mark Doliner <markdoliner@pidgin.im>

2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1 /*
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2 * gaim
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4 * Some code copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
6302
94b9c158969c [gaim-migrate @ 6801]
Brian Tarricon
parents: 6292
diff changeset
5 * Some code copyright (C) 1999-2001, Eric Warmenhoven
94b9c158969c [gaim-migrate @ 6801]
Brian Tarricon
parents: 6292
diff changeset
6 * Some code copyright (C) 2001-2003, Sean Egan
94b9c158969c [gaim-migrate @ 6801]
Brian Tarricon
parents: 6292
diff changeset
7 * Some code copyright (C) 2001-2003, Mark Doliner <thekingant@users.sourceforge.net>
94b9c158969c [gaim-migrate @ 6801]
Brian Tarricon
parents: 6292
diff changeset
8 *
94b9c158969c [gaim-migrate @ 6801]
Brian Tarricon
parents: 6292
diff changeset
9 * Most libfaim code copyright (C) 1998-2001 Adam Fritzler <afritz@auk.cx>
94b9c158969c [gaim-migrate @ 6801]
Brian Tarricon
parents: 6292
diff changeset
10 * Some libfaim code copyright (C) 2001-2003 Mark Doliner <thekingant@users.sourceforge.net>
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
11 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
15 * (at your option) any later version.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
16 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
20 * GNU General Public License for more details.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
21 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
24 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
25 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
26 */
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
27 #include "internal.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
28
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
29 #include "account.h"
5638
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
30 #include "accountopt.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
31 #include "conversation.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
32 #include "debug.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
33 #include "ft.h"
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
34 #include "multi.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
35 #include "notify.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
36 #include "privacy.h"
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
37 #include "prpl.h"
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
38 #include "proxy.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
39 #include "request.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
40 #include "util.h"
6115
ac81410298f2 [gaim-migrate @ 6578]
Christian Hammond <chipx86@chipx86.com>
parents: 6113
diff changeset
41 #include "html.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
42
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
43 #include "aim.h"
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
44 #include "md5.h"
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
45
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
46 /* XXX CORE/UI */
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
47 #include "gtkinternal.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
48 #include "gaim.h"
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
49
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
50
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
51 #define UC_AOL 0x02
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
52 #define UC_ADMIN 0x04
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
53 #define UC_UNCONFIRMED 0x08
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
54 #define UC_NORMAL 0x10
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
55 #define UC_AB 0x20
3079
e55c9a9cc4fc [gaim-migrate @ 3093]
Mark Doliner <markdoliner@pidgin.im>
parents: 3074
diff changeset
56 #define UC_WIRELESS 0x40
6318
494984c2ea4d [gaim-migrate @ 6817]
Mark Doliner <markdoliner@pidgin.im>
parents: 6310
diff changeset
57 #define UC_HIPTOP 0x80
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
58
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
59 #define AIMHASHDATA "http://gaim.sourceforge.net/aim_data.php3"
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
60
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
61 static GaimPlugin *my_protocol = NULL;
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4246
diff changeset
62
4811
ce0da6668339 [gaim-migrate @ 5131]
Mark Doliner <markdoliner@pidgin.im>
parents: 4807
diff changeset
63 static int caps_aim = AIM_CAPS_CHAT | AIM_CAPS_BUDDYICON | AIM_CAPS_IMIMAGE | AIM_CAPS_SENDFILE | AIM_CAPS_INTEROPERATE;
ce0da6668339 [gaim-migrate @ 5131]
Mark Doliner <markdoliner@pidgin.im>
parents: 4807
diff changeset
64 static int caps_icq = AIM_CAPS_BUDDYICON | AIM_CAPS_IMIMAGE | AIM_CAPS_SENDFILE | AIM_CAPS_ICQUTF8 | AIM_CAPS_INTEROPERATE;
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
65
4665
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
66 static fu8_t features_aim[] = {0x01, 0x01, 0x01, 0x02};
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
67 static fu8_t features_icq[] = {0x01, 0x06};
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
68
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
69 struct oscar_data {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
70 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
71 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
72
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
73 guint cnpa;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
74 guint paspa;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
75 guint emlpa;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
76 guint icopa;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
77
4823
e855589fb088 [gaim-migrate @ 5148]
Roald Dahl
parents: 4822
diff changeset
78 gboolean iconconnecting;
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
79 gboolean set_icon;
4823
e855589fb088 [gaim-migrate @ 5148]
Roald Dahl
parents: 4822
diff changeset
80
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
81 GSList *create_rooms;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
82
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
83 gboolean conf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
84 gboolean reqemail;
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
85 gboolean setemail;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
86 char *email;
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
87 gboolean setnick;
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
88 char *newsn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
89 gboolean chpass;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
90 char *oldp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
91 char *newp;
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
92
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
93 GSList *oscar_chats;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
94 GSList *direct_ims;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
95 GSList *file_transfers;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
96 GHashTable *buddyinfo;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
97 GSList *requesticon;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
98
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
99 gboolean killme;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
100 gboolean icq;
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
101 GSList *evilhack;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
102 guint icontimer;
5968
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
103 guint getblisttimer;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
104
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
105 struct {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
106 guint maxwatchers; /* max users who can watch you */
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
107 guint maxbuddies; /* max users you can watch */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
108 guint maxgroups; /* max groups in server list */
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
109 guint maxpermits; /* max users on permit list */
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
110 guint maxdenies; /* max users on deny list */
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
111 guint maxsiglen; /* max size (bytes) of profile */
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
112 guint maxawaymsglen; /* max size (bytes) of posted away message */
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
113 } rights;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
114 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
115
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
116 struct create_room {
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
117 char *name;
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
118 int exchange;
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
119 };
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
120
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
121 struct chat_connection {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
122 char *name;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
123 char *show; /* AOL did something funny to us */
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
124 fu16_t exchange;
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
125 fu16_t instance;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
126 int fd; /* this is redundant since we have the conn below */
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
127 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
128 int inpa;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
129 int id;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
130 GaimConnection *gc; /* i hate this. */
5679
943eb70954b6 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
131 GaimConversation *cnv; /* bah. */
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
132 int maxlen;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
133 int maxvis;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
134 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
135
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
136 struct direct_im {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
137 GaimConnection *gc;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
138 char name[80];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
139 int watcher;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
140 aim_conn_t *conn;
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
141 gboolean connected;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
142 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
143
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
144 struct ask_direct {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
145 GaimConnection *gc;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
146 char *sn;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
147 char ip[64];
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
148 fu8_t cookie[8];
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
149 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
150
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
151 /* Various PRPL-specific buddy info that we want to keep track of */
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
152 struct buddyinfo {
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
153 time_t signon;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
154 int caps;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
155 gboolean typingnot;
6292
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
156 gchar *availmsg;
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
157
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
158 unsigned long ico_me_len;
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
159 unsigned long ico_me_csum;
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
160 time_t ico_me_time;
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
161 gboolean ico_informed;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
162
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
163 unsigned long ico_len;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
164 unsigned long ico_csum;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
165 time_t ico_time;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
166 gboolean ico_need;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
167
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
168 fu16_t iconcsumlen;
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
169 fu8_t *iconcsum;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
170 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
171
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
172 struct name_data {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
173 GaimConnection *gc;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
174 gchar *name;
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
175 gchar *nick;
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
176 };
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
177
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
178 static char *msgerrreason[] = {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
179 N_("Invalid error"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
180 N_("Invalid SNAC"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
181 N_("Rate to host"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
182 N_("Rate to client"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
183 N_("Not logged in"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
184 N_("Service unavailable"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
185 N_("Service not defined"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
186 N_("Obsolete SNAC"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
187 N_("Not supported by host"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
188 N_("Not supported by client"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
189 N_("Refused by client"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
190 N_("Reply too big"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
191 N_("Responses lost"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
192 N_("Request denied"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
193 N_("Busted SNAC payload"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
194 N_("Insufficient rights"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
195 N_("In local permit/deny"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
196 N_("Too evil (sender)"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
197 N_("Too evil (receiver)"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
198 N_("User temporarily unavailable"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
199 N_("No match"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
200 N_("List overflow"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
201 N_("Request ambiguous"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
202 N_("Queue full"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
203 N_("Not while on AOL")
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
204 };
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
205 static int msgerrreasonlen = 25;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
206
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
207 /* All the libfaim->gaim callback functions */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
208 static int gaim_parse_auth_resp (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
209 static int gaim_parse_login (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
210 static int gaim_handle_redirect (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
211 static int gaim_info_change (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
212 static int gaim_account_confirm (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
213 static int gaim_parse_oncoming (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
214 static int gaim_parse_offgoing (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
215 static int gaim_parse_incoming_im(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
216 static int gaim_parse_misses (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
217 static int gaim_parse_clientauto (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
218 static int gaim_parse_user_info (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
219 static int gaim_parse_motd (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
220 static int gaim_chatnav_info (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
221 static int gaim_chat_join (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
222 static int gaim_chat_leave (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
223 static int gaim_chat_info_update (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
224 static int gaim_chat_incoming_msg(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
225 static int gaim_email_parseupdate(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
226 static int gaim_icon_error (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
227 static int gaim_icon_parseicon (aim_session_t *, aim_frame_t *, ...);
5844
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
228 static int oscar_icon_req (aim_session_t *, aim_frame_t *, ...);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
229 static int gaim_parse_msgack (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
230 static int gaim_parse_ratechange (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
231 static int gaim_parse_evilnotify (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
232 static int gaim_parse_searcherror(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
233 static int gaim_parse_searchreply(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
234 static int gaim_bosrights (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
235 static int gaim_connerr (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
236 static int conninitdone_admin (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
237 static int conninitdone_bos (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
238 static int conninitdone_chatnav (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
239 static int conninitdone_chat (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
240 static int conninitdone_email (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
241 static int conninitdone_icon (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
242 static int gaim_parse_msgerr (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
243 static int gaim_parse_mtn (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
244 static int gaim_parse_locaterights(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
245 static int gaim_parse_buddyrights(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
246 static int gaim_parse_locerr (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
247 static int gaim_icbm_param_info (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
248 static int gaim_parse_genericerr (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
249 static int gaim_memrequest (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
250 static int gaim_selfinfo (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
251 static int gaim_offlinemsg (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
252 static int gaim_offlinemsgdone (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
253 static int gaim_icqalias (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
254 static int gaim_icqinfo (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
255 static int gaim_popup (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
256 #ifndef NOSSI
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
257 static int gaim_ssi_parseerr (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
258 static int gaim_ssi_parserights (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
259 static int gaim_ssi_parselist (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
260 static int gaim_ssi_parseack (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
261 static int gaim_ssi_authgiven (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
262 static int gaim_ssi_authrequest (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
263 static int gaim_ssi_authreply (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
264 static int gaim_ssi_gotadded (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
265 #endif
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
266
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
267 /* for DirectIM/image transfer */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
268 static int gaim_odc_initiate (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
269 static int gaim_odc_incoming (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
270 static int gaim_odc_typing (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
271 static int gaim_update_ui (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
272
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
273 /* for file transfer */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
274 static int oscar_sendfile_estblsh(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
275 static int oscar_sendfile_prompt (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
276 static int oscar_sendfile_ack (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
277 static int oscar_sendfile_done (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
278
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
279 /* for icons */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
280 static gboolean gaim_icon_timerfunc(gpointer data);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
281
5306
1707fdf8c530 [gaim-migrate @ 5678]
Mark Doliner <markdoliner@pidgin.im>
parents: 5302
diff changeset
282 /* prpl actions - remove this at some point */
5954
58e43cf2dc1f [gaim-migrate @ 6398]
Mark Doliner <markdoliner@pidgin.im>
parents: 5948
diff changeset
283 static void oscar_set_info(GaimConnection *gc, const char *text);
5306
1707fdf8c530 [gaim-migrate @ 5678]
Mark Doliner <markdoliner@pidgin.im>
parents: 5302
diff changeset
284
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
285 static void oscar_free_name_data(struct name_data *data) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
286 g_free(data->name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
287 g_free(data->nick);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
288 g_free(data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
289 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
290
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
291 static void oscar_free_buddyinfo(void *data) {
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
292 struct buddyinfo *bi = data;
6292
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
293 g_free(bi->availmsg);
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
294 g_free(bi->iconcsum);
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
295 g_free(bi);
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
296 }
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
297
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
298 static fu32_t oscar_encoding_check(const char *utf8)
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
299 {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
300 int i = 0;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
301 fu32_t encodingflag = 0;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
302
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
303 /* Determine how we can send this message. Per the warnings elsewhere
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
304 * in this file, these little checks determine the simplest encoding
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
305 * we can use for a given message send using it. */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
306 while (utf8[i]) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
307 if ((unsigned char)utf8[i] > 0x7f) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
308 /* not ASCII! */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
309 encodingflag = AIM_IMFLAGS_ISO_8859_1;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
310 break;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
311 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
312 i++;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
313 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
314 while (utf8[i]) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
315 /* ISO-8859-1 is 0x00-0xbf in the first byte
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
316 * followed by 0xc0-0xc3 in the second */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
317 if ((unsigned char)utf8[i] < 0x80) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
318 i++;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
319 continue;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
320 } else if (((unsigned char)utf8[i] & 0xfc) == 0xc0 &&
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
321 ((unsigned char)utf8[i + 1] & 0xc0) == 0x80) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
322 i += 2;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
323 continue;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
324 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
325 encodingflag = AIM_IMFLAGS_UNICODE;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
326 break;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
327 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
328
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
329 return encodingflag;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
330 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
331
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
332 static fu32_t oscar_encoding_parse(const char *enc)
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
333 {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
334 char *charset;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
335
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
336 /* If anything goes wrong, fall back on ASCII and print a message */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
337 if (enc == NULL) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
338 gaim_debug(GAIM_DEBUG_WARNING, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
339 "Encoding was null, that's odd\n");
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
340 return 0;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
341 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
342 charset = strstr(enc, "charset=");
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
343 if (charset == NULL) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
344 gaim_debug(GAIM_DEBUG_WARNING, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
345 "No charset specified for info, assuming ASCII\n");
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
346 return 0;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
347 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
348 charset += 8;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
349 if (!strcmp(charset, "\"us-ascii\"") || !strcmp(charset, "\"utf-8\"")) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
350 /* UTF-8 is our native charset, ASCII is a proper subset */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
351 return 0;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
352 } else if (!strcmp(charset, "\"iso-8859-1\"")) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
353 return AIM_IMFLAGS_ISO_8859_1;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
354 } else if (!strcmp(charset, "\"unicode-2-0\"")) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
355 return AIM_IMFLAGS_UNICODE;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
356 } else {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
357 gaim_debug(GAIM_DEBUG_WARNING, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
358 "Unrecognized character set '%s', using ASCII\n", charset);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
359 return 0;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
360 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
361 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
362
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
363 gchar *oscar_encoding_to_utf8(const char *encoding, char *text, int textlen)
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
364 {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
365 gchar *utf8 = NULL;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
366 int flags = oscar_encoding_parse(encoding);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
367
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
368 switch (flags) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
369 case 0:
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
370 utf8 = g_strndup(text, textlen);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
371 break;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
372 case AIM_IMFLAGS_ISO_8859_1:
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
373 utf8 = g_convert(text, textlen, "UTF-8", "ISO-8859-1", NULL, NULL, NULL);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
374 break;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
375 case AIM_IMFLAGS_UNICODE:
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
376 utf8 = g_convert(text, textlen, "UTF-8", "UCS-2BE", NULL, NULL, NULL);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
377 break;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
378 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
379
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
380 return utf8;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
381 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
382
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
383 static struct direct_im *find_direct_im(struct oscar_data *od, const char *who) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
384 GSList *d = od->direct_ims;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
385 struct direct_im *m = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
386
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
387 while (d) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
388 m = (struct direct_im *)d->data;
4355
87128096267f [gaim-migrate @ 4620]
Aubin LaBrosse
parents: 4353
diff changeset
389 if (!aim_sncmp(who, m->name))
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
390 return m;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
391 d = d->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
392 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
393
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
394 return NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
395 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
396
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
397 static char *extract_name(const char *name) {
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
398 char *tmp, *x;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
399 int i, j;
4120
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
400
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
401 if (!name)
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
402 return NULL;
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
403
4120
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
404 x = strchr(name, '-');
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
405
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
406 if (!x) return NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
407 x = strchr(++x, '-');
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
408 if (!x) return NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
409 tmp = g_strdup(++x);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
410
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
411 for (i = 0, j = 0; x[i]; i++) {
2361
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
412 char hex[3];
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
413 if (x[i] != '%') {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
414 tmp[j++] = x[i];
2361
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
415 continue;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
416 }
2361
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
417 strncpy(hex, x + ++i, 2); hex[2] = 0;
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
418 i++;
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
419 tmp[j++] = strtol(hex, NULL, 16);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
420 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
421
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
422 tmp[j] = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
423 return tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
424 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
425
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
426 static struct chat_connection *find_oscar_chat(GaimConnection *gc, int id) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
427 GSList *g = ((struct oscar_data *)gc->proto_data)->oscar_chats;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
428 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
429
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
430 while (g) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
431 c = (struct chat_connection *)g->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
432 if (c->id == id)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
433 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
434 g = g->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
435 c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
436 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
437
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
438 return c;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
439 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
440
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
441 static struct chat_connection *find_oscar_chat_by_conn(GaimConnection *gc,
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
442 aim_conn_t *conn) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
443 GSList *g = ((struct oscar_data *)gc->proto_data)->oscar_chats;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
444 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
445
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
446 while (g) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
447 c = (struct chat_connection *)g->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
448 if (c->conn == conn)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
449 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
450 g = g->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
451 c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
452 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
453
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
454 return c;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
455 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
456
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
457 static void gaim_odc_disconnect(aim_session_t *sess, aim_conn_t *conn) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
458 GaimConnection *gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
459 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
5679
943eb70954b6 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
460 GaimConversation *cnv;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
461 struct direct_im *dim;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
462 char *sn;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
463 char buf[256];
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
464
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
465 sn = g_strdup(aim_odc_getsn(conn));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
466
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
467 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
468 "%s disconnected Direct IM.\n", sn);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
469
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
470 dim = find_direct_im(od, sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
471 od->direct_ims = g_slist_remove(od->direct_ims, dim);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
472 gaim_input_remove(dim->watcher);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
473
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
474 if (dim->connected)
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
475 g_snprintf(buf, sizeof buf, _("Direct IM with %s closed"), sn);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
476 else
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
477 g_snprintf(buf, sizeof buf, _("Direct IM with %s failed"), sn);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
478
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
479 if ((cnv = gaim_find_conversation(sn)))
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6498
diff changeset
480 gaim_conversation_write(cnv, NULL, buf, -1, GAIM_MESSAGE_SYSTEM, time(NULL));
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
481
5579
9a3dbd24e80a [gaim-migrate @ 5983]
Sean Egan <seanegan@pidgin.im>
parents: 5577
diff changeset
482 gaim_conversation_update_progress(cnv, 0);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
483
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
484 g_free(dim); /* I guess? I don't see it anywhere else... -- mid */
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
485 g_free(sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
486
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
487 return;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
488 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
489
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
490 static void oscar_callback(gpointer data, gint source, GaimInputCondition condition) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
491 aim_conn_t *conn = (aim_conn_t *)data;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
492 aim_session_t *sess = aim_conn_getsess(conn);
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
493 GaimConnection *gc = sess ? sess->aux_data : NULL;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
494 struct oscar_data *od;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
495
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
496 if (!gc) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
497 /* gc is null. we return, else we seg SIGSEG on next line. */
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
498 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
499 "oscar callback for closed connection (1).\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
500 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
501 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
502
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
503 od = (struct oscar_data *)gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
504
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
505 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
506 /* oh boy. this is probably bad. i guess the only thing we
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
507 * can really do is return? */
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
508 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
509 "oscar callback for closed connection (2).\n");
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
510 gaim_debug(GAIM_DEBUG_MISC, "oscar", "gc = %p\n", gc);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
511 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
512 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
513
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
514 if (condition & GAIM_INPUT_READ) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
515 if (conn->type == AIM_CONN_TYPE_LISTENER) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
516 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
517 "got information on rendezvous listener\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
518 if (aim_handlerendconnect(od->sess, conn) < 0) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
519 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
520 "connection error (rendezvous listener)\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
521 aim_conn_kill(od->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
522 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
523 } else {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
524 if (aim_get_command(od->sess, conn) >= 0) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
525 aim_rxdispatch(od->sess);
6029
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
526 if (od->killme) {
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
527 gaim_debug(GAIM_DEBUG_ERROR, "oscar", "Waiting to be destroyed\n");
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
528 return;
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
529 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
530 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
531 if ((conn->type == AIM_CONN_TYPE_BOS) ||
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
532 !(aim_getconn_type(od->sess, AIM_CONN_TYPE_BOS))) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
533 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
534 "major connection error\n");
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
535 gaim_connection_error(gc, _("Disconnected."));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
536 } else if (conn->type == AIM_CONN_TYPE_CHAT) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
537 struct chat_connection *c = find_oscar_chat_by_conn(gc, conn);
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
538 char *buf;
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
539 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
540 "disconnected from chat room %s\n", c->name);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
541 c->conn = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
542 if (c->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
543 gaim_input_remove(c->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
544 c->inpa = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
545 c->fd = -1;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
546 aim_conn_kill(od->sess, &conn);
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
547 buf = g_strdup_printf(_("You have been disconnected from chat room %s."), c->name);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
548 gaim_notify_error(gc, NULL, buf, NULL);
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
549 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
550 } else if (conn->type == AIM_CONN_TYPE_CHATNAV) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
551 if (od->cnpa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
552 gaim_input_remove(od->cnpa);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
553 od->cnpa = 0;
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
554 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
555 "removing chatnav input watcher\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
556 while (od->create_rooms) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
557 struct create_room *cr = od->create_rooms->data;
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
558 g_free(cr->name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
559 od->create_rooms =
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
560 g_slist_remove(od->create_rooms, cr);
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
561 g_free(cr);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
562 gaim_notify_error(gc, NULL,
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
563 _("Chat is currently unavailable"),
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
564 NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
565 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
566 aim_conn_kill(od->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
567 } else if (conn->type == AIM_CONN_TYPE_AUTH) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
568 if (od->paspa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
569 gaim_input_remove(od->paspa);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
570 od->paspa = 0;
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
571 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
572 "removing authconn input watcher\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
573 aim_conn_kill(od->sess, &conn);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
574 } else if (conn->type == AIM_CONN_TYPE_EMAIL) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
575 if (od->emlpa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
576 gaim_input_remove(od->emlpa);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
577 od->emlpa = 0;
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
578 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
579 "removing email input watcher\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
580 aim_conn_kill(od->sess, &conn);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
581 } else if (conn->type == AIM_CONN_TYPE_ICON) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
582 if (od->icopa > 0)
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
583 gaim_input_remove(od->icopa);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
584 od->icopa = 0;
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
585 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
586 "removing icon input watcher\n");
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
587 aim_conn_kill(od->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
588 } else if (conn->type == AIM_CONN_TYPE_RENDEZVOUS) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
589 if (conn->subtype == AIM_CONN_SUBTYPE_OFT_DIRECTIM)
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
590 gaim_odc_disconnect(od->sess, conn);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
591 aim_conn_kill(od->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
592 } else {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
593 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
594 "holy crap! generic connection error! %hu\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
595 conn->type);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
596 aim_conn_kill(od->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
597 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
598 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
599 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
600 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
601 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
602
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
603 static void oscar_debug(aim_session_t *sess, int level, const char *format, va_list va) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
604 char *s = g_strdup_vprintf(format, va);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
605 char buf[256];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
606 char *t;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
607 GaimConnection *gc = sess->aux_data;
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
608
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
609 g_snprintf(buf, sizeof(buf), "%s %d: ", gaim_account_get_username(gaim_connection_get_account(gc)), level);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
610 t = g_strconcat(buf, s, NULL);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
611 gaim_debug(GAIM_DEBUG_INFO, "oscar", t);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
612 if (t[strlen(t)-1] != '\n')
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
613 gaim_debug(GAIM_DEBUG_INFO, NULL, "\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
614 g_free(t);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
615 g_free(s);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
616 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
617
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
618 static void oscar_login_connect(gpointer data, gint source, GaimInputCondition cond)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
619 {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
620 GaimConnection *gc = data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
621 struct oscar_data *od;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
622 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
623 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
624
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
625 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
626 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
627 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
628 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
629
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
630 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
631 sess = od->sess;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
632 conn = aim_getconn_type_all(sess, AIM_CONN_TYPE_AUTH);
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
633
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
634 conn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
635
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
636 if (source < 0) {
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
637 gaim_connection_error(gc, _("Couldn't connect to host"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
638 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
639 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
640
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
641 aim_conn_completeconnect(sess, conn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
642 gc->inpa = gaim_input_add(conn->fd, GAIM_INPUT_READ, oscar_callback, conn);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
643 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
644 "Password sent, waiting for response\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
645 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
646
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
647 static void oscar_login(GaimAccount *account) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
648 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
649 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
650 char buf[256];
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
651 GaimConnection *gc = gaim_account_get_connection(account);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
652 struct oscar_data *od = gc->proto_data = g_new0(struct oscar_data, 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
653
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
654 gaim_debug(GAIM_DEBUG_MISC, "oscar", "oscar_login: gc = %p\n", gc);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
655
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
656 if (isdigit(*(gaim_account_get_username(account)))) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
657 od->icq = TRUE;
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
658 } else {
2918
f4efca1781b7 [gaim-migrate @ 2931]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2916
diff changeset
659 gc->flags |= OPT_CONN_HTML;
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
660 gc->flags |= OPT_CONN_AUTO_RESP;
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
661 }
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
662 od->buddyinfo = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, oscar_free_buddyinfo);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
663
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
664 sess = g_new0(aim_session_t, 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
665
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
666 aim_session_init(sess, AIM_SESS_FLAGS_NONBLOCKCONNECT, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
667 aim_setdebuggingcb(sess, oscar_debug);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
668
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
669 /* we need an immediate queue because we don't use a while-loop to
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
670 * see if things need to be sent. */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
671 aim_tx_setenqueue(sess, AIM_TX_IMMEDIATE, NULL);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
672 od->sess = sess;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
673 sess->aux_data = gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
674
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
675 conn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
676 if (conn == NULL) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
677 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
678 "internal connection error\n");
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
679 gaim_connection_error(gc, _("Unable to login to AIM"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
680 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
681 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
682
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
683 g_snprintf(buf, sizeof(buf), _("Signon: %s"), gaim_account_get_username(account));
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
684 gaim_connection_update_progress(gc, buf, 2, 5);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
685
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
686 aim_conn_addhandler(sess, conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
687 aim_conn_addhandler(sess, conn, 0x0017, 0x0007, gaim_parse_login, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
688 aim_conn_addhandler(sess, conn, 0x0017, 0x0003, gaim_parse_auth_resp, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
689
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
690 conn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
691 if (gaim_proxy_connect(account, gaim_account_get_string(account, "server", FAIM_LOGIN_SERVER),
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
692 gaim_account_get_int(account, "port", FAIM_LOGIN_PORT),
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
693 oscar_login_connect, gc) < 0) {
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
694 gaim_connection_error(gc, _("Couldn't connect to host"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
695 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
696 }
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
697 aim_request_login(sess, conn, gaim_account_get_username(account));
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
698 }
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
699
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
700 static void oscar_close(GaimConnection *gc) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
701 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
702
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
703 while (od->oscar_chats) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
704 struct chat_connection *n = od->oscar_chats->data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
705 if (n->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
706 gaim_input_remove(n->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
707 g_free(n->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
708 g_free(n->show);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
709 od->oscar_chats = g_slist_remove(od->oscar_chats, n);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
710 g_free(n);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
711 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
712 while (od->direct_ims) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
713 struct direct_im *n = od->direct_ims->data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
714 if (n->watcher > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
715 gaim_input_remove(n->watcher);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
716 od->direct_ims = g_slist_remove(od->direct_ims, n);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
717 g_free(n);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
718 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
719 /* BBB */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
720 while (od->file_transfers) {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
721 GaimXfer *xfer;
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
722 xfer = (GaimXfer *)od->file_transfers->data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
723 gaim_xfer_destroy(xfer);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
724 }
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
725 while (od->requesticon) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
726 char *sn = od->requesticon->data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
727 od->requesticon = g_slist_remove(od->requesticon, sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
728 free(sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
729 }
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
730 g_hash_table_destroy(od->buddyinfo);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
731 while (od->evilhack) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
732 g_free(od->evilhack->data);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
733 od->evilhack = g_slist_remove(od->evilhack, od->evilhack->data);
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
734 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
735 while (od->create_rooms) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
736 struct create_room *cr = od->create_rooms->data;
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
737 g_free(cr->name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
738 od->create_rooms = g_slist_remove(od->create_rooms, cr);
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
739 g_free(cr);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
740 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
741 if (od->email)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
742 g_free(od->email);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
743 if (od->newp)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
744 g_free(od->newp);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
745 if (od->oldp)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
746 g_free(od->oldp);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
747 if (gc->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
748 gaim_input_remove(gc->inpa);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
749 if (od->cnpa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
750 gaim_input_remove(od->cnpa);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
751 if (od->paspa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
752 gaim_input_remove(od->paspa);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
753 if (od->emlpa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
754 gaim_input_remove(od->emlpa);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
755 if (od->icopa > 0)
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
756 gaim_input_remove(od->icopa);
4832
32a5d9c54484 [gaim-migrate @ 5157]
Mark Doliner <markdoliner@pidgin.im>
parents: 4830
diff changeset
757 if (od->icopa > 0)
32a5d9c54484 [gaim-migrate @ 5157]
Mark Doliner <markdoliner@pidgin.im>
parents: 4830
diff changeset
758 gaim_input_remove(od->icopa);
32a5d9c54484 [gaim-migrate @ 5157]
Mark Doliner <markdoliner@pidgin.im>
parents: 4830
diff changeset
759 if (od->icontimer)
32a5d9c54484 [gaim-migrate @ 5157]
Mark Doliner <markdoliner@pidgin.im>
parents: 4830
diff changeset
760 g_source_remove(od->icontimer);
5968
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
761 if (od->getblisttimer)
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
762 g_source_remove(od->getblisttimer);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
763 aim_session_kill(od->sess);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
764 g_free(od->sess);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
765 od->sess = NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
766 g_free(gc->proto_data);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
767 gc->proto_data = NULL;
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
768 gaim_debug(GAIM_DEBUG_INFO, "oscar", "Signed off.\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
769 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
770
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
771 static void oscar_bos_connect(gpointer data, gint source, GaimInputCondition cond) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
772 GaimConnection *gc = data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
773 struct oscar_data *od;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
774 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
775 aim_conn_t *bosconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
776
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
777 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
778 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
779 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
780 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
781
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
782 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
783 sess = od->sess;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
784 bosconn = od->conn;
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
785 bosconn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
786
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
787 if (source < 0) {
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
788 gaim_connection_error(gc, _("Could Not Connect"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
789 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
790 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
791
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
792 aim_conn_completeconnect(sess, bosconn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
793 gc->inpa = gaim_input_add(bosconn->fd, GAIM_INPUT_READ, oscar_callback, bosconn);
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
794 gaim_connection_update_progress(gc,
5577
2b809e0cefcd [gaim-migrate @ 5981]
Christian Hammond <chipx86@chipx86.com>
parents: 5576
diff changeset
795 _("Connection established, cookie sent"), 4, 5);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
796 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
797
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
798 /* BBB */
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
799 /*
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
800 * This little area in oscar.c is the nexus of file transfer code,
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
801 * so I wrote a little explanation of what happens. I am such a
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
802 * ninja.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
803 *
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
804 * The series of events for a file send is:
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
805 * -Create xfer and call gaim_xfer_request (this happens in oscar_ask_sendfile)
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
806 * -User chooses a file and oscar_xfer_init is called. It establishs a
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
807 * listening socket, then asks the remote user to connect to us (and
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
808 * gives them the file name, port, IP, etc.)
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
809 * -They connect to us and we send them an AIM_CB_OFT_PROMPT (this happens
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
810 * in oscar_sendfile_estblsh)
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
811 * -They send us an AIM_CB_OFT_ACK and then we start sending data
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
812 * -When we finish, they send us an AIM_CB_OFT_DONE and they close the
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
813 * connection.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
814 * -We get drunk because file transfer kicks ass.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
815 *
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
816 * The series of events for a file receive is:
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
817 * -Create xfer and call gaim_xfer request (this happens in incomingim_chan2)
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
818 * -Gaim user selects file to name and location to save file to and
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
819 * oscar_xfer_init is called
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
820 * -It connects to the remote user using the IP they gave us earlier
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
821 * -After connecting, they send us an AIM_CB_OFT_PROMPT. In reply, we send
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
822 * them an AIM_CB_OFT_ACK.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
823 * -They begin to send us lots of raw data.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
824 * -When they finish sending data we send an AIM_CB_OFT_DONE and then close
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
825 * the connectionn.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
826 */
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
827 static void oscar_sendfile_connected(gpointer data, gint source, GaimInputCondition condition);
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
828
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
829 /* XXX - This function is pretty ugly */
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
830 static void oscar_xfer_init(GaimXfer *xfer)
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
831 {
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
832 struct aim_oft_info *oft_info = xfer->data;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
833 GaimConnection *gc = oft_info->sess->aux_data;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
834 struct oscar_data *od = gc->proto_data;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
835
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
836 if (gaim_xfer_get_type(xfer) == GAIM_XFER_SEND) {
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
837 int i;
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
838
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
839 xfer->filename = g_path_get_basename(xfer->local_filename);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
840 strncpy(oft_info->fh.name, xfer->filename, 64);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
841 oft_info->fh.totsize = gaim_xfer_get_size(xfer);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
842 oft_info->fh.size = gaim_xfer_get_size(xfer);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
843 oft_info->fh.checksum = aim_oft_checksum_file(xfer->local_filename);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
844
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
845 /*
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
846 * First try the port specified earlier (5190). If that fails,
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
847 * increment by 1 and try again.
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
848 */
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
849 aim_sendfile_listen(od->sess, oft_info);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
850 for (i=0; (i<5 && !oft_info->conn); i++) {
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
851 xfer->local_port = oft_info->port = oft_info->port + 1;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
852 aim_sendfile_listen(od->sess, oft_info);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
853 }
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
854 gaim_debug(GAIM_DEBUG_MISC, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
855 "port is %d, ip is %s\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
856 xfer->local_port, oft_info->clientip);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
857 if (oft_info->conn) {
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
858 xfer->watcher = gaim_input_add(oft_info->conn->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
859 aim_im_sendch2_sendfile_ask(od->sess, oft_info);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
860 aim_conn_addhandler(od->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_ESTABLISHED, oscar_sendfile_estblsh, 0);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
861 } else {
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
862 gaim_notify_error(gc, NULL, _("File Transfer Aborted"),
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
863 _("Unable to establish listener socket."));
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
864 /* 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
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
865 /* gaim_xfer_cancel_remote(xfer); */
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
866 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
867 } else if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) {
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
868 oft_info->conn = aim_newconn(od->sess, AIM_CONN_TYPE_RENDEZVOUS, NULL);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
869 if (oft_info->conn) {
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
870 oft_info->conn->subtype = AIM_CONN_SUBTYPE_OFT_SENDFILE;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
871 aim_conn_addhandler(od->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_PROMPT, oscar_sendfile_prompt, 0);
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
872 oft_info->conn->fd = xfer->fd = gaim_proxy_connect(gaim_connection_get_account(gc), xfer->remote_ip, xfer->remote_port,
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
873 oscar_sendfile_connected, xfer);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
874 if (xfer->fd == -1) {
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
875 gaim_notify_error(gc, NULL, _("File Transfer Aborted"),
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
876 _("Unable to establish file descriptor."));
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
877 /* gaim_xfer_cancel_remote(xfer); */
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
878 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
879 } else {
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
880 gaim_notify_error(gc, NULL, _("File Transfer Aborted"),
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
881 _("Unable to create new connection."));
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
882 /* gaim_xfer_cancel_remote(xfer); */
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
883 /* Try a different port? Ask them to connect to us? */
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
884 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
885
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
886 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
887 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
888
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
889 static void oscar_xfer_start(GaimXfer *xfer)
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
890 {
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
891
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
892 gaim_debug(GAIM_DEBUG_INFO, "oscar", "AAA - in oscar_xfer_start\n");
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
893 /* I'm pretty sure we don't need to do jack here. Nor Jill. */
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
894 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
895
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
896 static void oscar_xfer_end(GaimXfer *xfer)
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
897 {
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
898 struct aim_oft_info *oft_info = xfer->data;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
899 GaimConnection *gc = oft_info->sess->aux_data;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
900 struct oscar_data *od = gc->proto_data;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
901
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
902 gaim_debug(GAIM_DEBUG_INFO, "oscar", "AAA - in oscar_xfer_end\n");
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
903
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
904 if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) {
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
905 oft_info->fh.nrecvd = gaim_xfer_get_bytes_sent(xfer);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
906 aim_oft_sendheader(oft_info->sess, AIM_CB_OFT_DONE, oft_info);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
907 }
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
908
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
909 aim_conn_kill(oft_info->sess, &oft_info->conn);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
910 aim_oft_destroyinfo(oft_info);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
911 xfer->data = NULL;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
912 od->file_transfers = g_slist_remove(od->file_transfers, xfer);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
913 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
914
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
915 static void oscar_xfer_cancel_send(GaimXfer *xfer)
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
916 {
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
917 struct aim_oft_info *oft_info = xfer->data;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
918 GaimConnection *gc = oft_info->sess->aux_data;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
919 struct oscar_data *od = gc->proto_data;
4763
7313e8049f0e [gaim-migrate @ 5081]
Mark Doliner <markdoliner@pidgin.im>
parents: 4762
diff changeset
920
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
921 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
922 "AAA - in oscar_xfer_cancel_send\n");
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
923
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
924 aim_im_sendch2_sendfile_cancel(oft_info->sess, oft_info);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
925
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
926 aim_conn_kill(oft_info->sess, &oft_info->conn);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
927 aim_oft_destroyinfo(oft_info);
4763
7313e8049f0e [gaim-migrate @ 5081]
Mark Doliner <markdoliner@pidgin.im>
parents: 4762
diff changeset
928 xfer->data = NULL;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
929 od->file_transfers = g_slist_remove(od->file_transfers, xfer);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
930 }
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
931
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
932 static void oscar_xfer_cancel_recv(GaimXfer *xfer)
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
933 {
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
934 struct aim_oft_info *oft_info = xfer->data;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
935 GaimConnection *gc = oft_info->sess->aux_data;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
936 struct oscar_data *od = gc->proto_data;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
937
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
938 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
939 "AAA - in oscar_xfer_cancel_recv\n");
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
940
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
941 aim_im_sendch2_sendfile_cancel(oft_info->sess, oft_info);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
942
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
943 aim_conn_kill(oft_info->sess, &oft_info->conn);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
944 aim_oft_destroyinfo(oft_info);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
945 xfer->data = NULL;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
946 od->file_transfers = g_slist_remove(od->file_transfers, xfer);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
947 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
948
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
949 static void oscar_xfer_ack(GaimXfer *xfer, const char *buffer, size_t size)
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
950 {
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
951 struct aim_oft_info *oft_info = xfer->data;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
952
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
953 if (gaim_xfer_get_type(xfer) == GAIM_XFER_SEND) {
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
954 /*
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
955 * If we're done sending, intercept the socket from the core ft code
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
956 * and wait for the other guy to send the "done" OFT packet.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
957 */
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
958 if (gaim_xfer_get_bytes_remaining(xfer) <= 0) {
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
959 gaim_input_remove(xfer->watcher);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
960 xfer->watcher = gaim_input_add(xfer->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
961 xfer->fd = 0;
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
962 gaim_xfer_set_completed(xfer, TRUE);
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
963 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
964 } else if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) {
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
965 /* Update our rolling checksum. Like Walmart, yo. */
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
966 oft_info->fh.recvcsum = aim_oft_checksum_chunk(buffer, size, oft_info->fh.recvcsum);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
967 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
968 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
969
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
970 static GaimXfer *oscar_find_xfer_by_cookie(GSList *fts, const char *ck)
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
971 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
972 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
973 struct aim_oft_info *oft_info;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
974
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
975 while (fts) {
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
976 xfer = fts->data;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
977 oft_info = xfer->data;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
978
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
979 if (oft_info && !strcmp(ck, oft_info->cookie))
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
980 return xfer;
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
981
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
982 fts = g_slist_next(fts);
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
983 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
984
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
985 return NULL;
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
986 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
987
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
988 static GaimXfer *oscar_find_xfer_by_conn(GSList *fts, aim_conn_t *conn)
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
989 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
990 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
991 struct aim_oft_info *oft_info;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
992
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
993 while (fts) {
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
994 xfer = fts->data;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
995 oft_info = xfer->data;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
996
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
997 if (oft_info && (conn == oft_info->conn))
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
998 return xfer;
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
999
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1000 fts = g_slist_next(fts);
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1001 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1002
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1003 return NULL;
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1004 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1005
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1006 static void oscar_ask_sendfile(GaimConnection *gc, const char *destsn) {
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1007 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1008 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1009 struct aim_oft_info *oft_info;
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1010
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1011 /* You want to send a file to someone else, you're so generous */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1012
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1013 /* Build the file transfer handle */
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1014 xfer = gaim_xfer_new(gaim_connection_get_account(gc), GAIM_XFER_SEND, destsn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1015 xfer->local_port = 5190;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1016
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1017 /* Create the oscar-specific data */
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1018 oft_info = aim_oft_createinfo(od->sess, NULL, destsn, xfer->local_ip, xfer->local_port, 0, 0, NULL);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1019 xfer->data = oft_info;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1020
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1021 /* Setup our I/O op functions */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1022 gaim_xfer_set_init_fnc(xfer, oscar_xfer_init);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1023 gaim_xfer_set_start_fnc(xfer, oscar_xfer_start);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1024 gaim_xfer_set_end_fnc(xfer, oscar_xfer_end);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
1025 gaim_xfer_set_cancel_send_fnc(xfer, oscar_xfer_cancel_send);
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
1026 gaim_xfer_set_cancel_recv_fnc(xfer, oscar_xfer_cancel_recv);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1027 gaim_xfer_set_ack_fnc(xfer, oscar_xfer_ack);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1028
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1029 /* Keep track of this transfer for later */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1030 od->file_transfers = g_slist_append(od->file_transfers, xfer);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1031
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1032 /* Now perform the request */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1033 gaim_xfer_request(xfer);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1034 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1035
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1036 static int gaim_parse_auth_resp(aim_session_t *sess, aim_frame_t *fr, ...) {
6029
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
1037 GaimConnection *gc = sess->aux_data;
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
1038 struct oscar_data *od = gc->proto_data;
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
1039 GaimAccount *account = gc->account;
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
1040 aim_conn_t *bosconn;
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
1041 char *host; int port;
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
1042 int i, rc;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1043 va_list ap;
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1044 struct aim_authresp_info *info;
6029
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
1045
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1046 port = gaim_account_get_int(account, "port", FAIM_LOGIN_PORT);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1047
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1048 va_start(ap, fr);
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1049 info = va_arg(ap, struct aim_authresp_info *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1050 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1051
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1052 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1053 "inside auth_resp (Screen name: %s)\n", info->sn);
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1054
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
1055 if (info->errorcode || !info->bosip || !info->cookielen || !info->cookie) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1056 char buf[256];
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1057 switch (info->errorcode) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1058 case 0x05:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1059 /* Incorrect nick/password */
6498
23d2fd361db6 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
1060 gc->wants_to_die = TRUE;
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1061 gaim_connection_error(gc, _("Incorrect nickname or password."));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1062 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1063 case 0x11:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1064 /* Suspended account */
6498
23d2fd361db6 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
1065 gc->wants_to_die = TRUE;
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1066 gaim_connection_error(gc, _("Your account is currently suspended."));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1067 break;
3498
3f6ce04ea3ad [gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents: 3490
diff changeset
1068 case 0x14:
3f6ce04ea3ad [gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents: 3490
diff changeset
1069 /* service temporarily unavailable */
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1070 gaim_connection_error(gc, _("The AOL Instant Messenger service is temporarily unavailable."));
3498
3f6ce04ea3ad [gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents: 3490
diff changeset
1071 break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1072 case 0x18:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1073 /* connecting too frequently */
6498
23d2fd361db6 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
1074 gc->wants_to_die = TRUE;
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1075 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
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1076 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1077 case 0x1c:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1078 /* client too old */
6498
23d2fd361db6 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
1079 gc->wants_to_die = TRUE;
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
1080 g_snprintf(buf, sizeof(buf), _("The client version you are using is too old. Please upgrade at %s"), GAIM_WEBSITE);
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1081 gaim_connection_error(gc, buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1082 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1083 default:
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1084 gaim_connection_error(gc, _("Authentication Failed"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1085 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1086 }
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1087 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1088 "Login Error Code 0x%04hx\n", info->errorcode);
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1089 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1090 "Error URL: %s\n", info->errorurl);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1091 od->killme = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1092 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1093 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1094
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1095
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1096 gaim_debug(GAIM_DEBUG_MISC, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1097 "Reg status: %hu\n", info->regstatus);
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1098
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1099 if (info->email) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1100 gaim_debug(GAIM_DEBUG_MISC, "oscar", "Email: %s\n", info->email);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1101 } else {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1102 gaim_debug(GAIM_DEBUG_MISC, "oscar", "Email is NULL\n");
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1103 }
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1104
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1105 gaim_debug(GAIM_DEBUG_MISC, "oscar", "BOSIP: %s\n", info->bosip);
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1106 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1107 "Closing auth connection...\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1108 aim_conn_kill(sess, &fr->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1109
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1110 bosconn = aim_newconn(sess, AIM_CONN_TYPE_BOS, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1111 if (bosconn == NULL) {
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1112 gaim_connection_error(gc, _("Internal Error"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1113 od->killme = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1114 return 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1115 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1116
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
1117 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1118 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_bos, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1119 aim_conn_addhandler(sess, bosconn, 0x0009, 0x0003, gaim_bosrights, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1120 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ACK, AIM_CB_ACK_ACK, NULL, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1121 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_REDIRECT, gaim_handle_redirect, 0);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1122 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_RIGHTSINFO, gaim_parse_locaterights, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1123 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_BUD, AIM_CB_BUD_RIGHTSINFO, gaim_parse_buddyrights, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1124 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_BUD, AIM_CB_BUD_ONCOMING, gaim_parse_oncoming, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1125 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_BUD, AIM_CB_BUD_OFFGOING, gaim_parse_offgoing, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1126 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_INCOMING, gaim_parse_incoming_im, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1127 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_ERROR, gaim_parse_locerr, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1128 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_MISSEDCALL, gaim_parse_misses, 0);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
1129 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_CLIENTAUTORESP, gaim_parse_clientauto, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1130 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_RATECHANGE, gaim_parse_ratechange, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1131 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_EVIL, gaim_parse_evilnotify, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1132 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOK, AIM_CB_LOK_ERROR, gaim_parse_searcherror, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1133 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOK, 0x0003, gaim_parse_searchreply, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1134 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_ERROR, gaim_parse_msgerr, 0);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
1135 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_MTN, gaim_parse_mtn, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1136 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_USERINFO, gaim_parse_user_info, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1137 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_ACK, gaim_parse_msgack, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1138 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_MOTD, gaim_parse_motd, 0);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
1139 aim_conn_addhandler(sess, bosconn, 0x0004, 0x0005, gaim_icbm_param_info, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1140 aim_conn_addhandler(sess, bosconn, 0x0001, 0x0001, gaim_parse_genericerr, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1141 aim_conn_addhandler(sess, bosconn, 0x0003, 0x0001, gaim_parse_genericerr, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1142 aim_conn_addhandler(sess, bosconn, 0x0009, 0x0001, gaim_parse_genericerr, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1143 aim_conn_addhandler(sess, bosconn, 0x0001, 0x001f, gaim_memrequest, 0);
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
1144 aim_conn_addhandler(sess, bosconn, 0x0001, 0x000f, gaim_selfinfo, 0);
5844
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
1145 aim_conn_addhandler(sess, bosconn, 0x0001, 0x0021, oscar_icon_req,0);
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
1146 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_OFFLINEMSG, gaim_offlinemsg, 0);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
1147 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_OFFLINEMSGCOMPLETE, gaim_offlinemsgdone, 0);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
1148 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_POP, 0x0002, gaim_popup, 0);
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
1149 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_ALIAS, gaim_icqalias, 0);
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
1150 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_INFO, gaim_icqinfo, 0);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
1151 #ifndef NOSSI
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
1152 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_ERROR, gaim_ssi_parseerr, 0);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
1153 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_RIGHTSINFO, gaim_ssi_parserights, 0);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
1154 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_LIST, gaim_ssi_parselist, 0);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
1155 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_NOLIST, gaim_ssi_parselist, 0);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
1156 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_SRVACK, gaim_ssi_parseack, 0);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
1157 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_RECVAUTH, gaim_ssi_authgiven, 0);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
1158 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_RECVAUTHREQ, gaim_ssi_authrequest, 0);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
1159 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_RECVAUTHREP, gaim_ssi_authreply, 0);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
1160 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_ADDED, gaim_ssi_gotadded, 0);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
1161 #endif
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
1162
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1163 ((struct oscar_data *)gc->proto_data)->conn = bosconn;
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1164 for (i = 0; i < (int)strlen(info->bosip); i++) {
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1165 if (info->bosip[i] == ':') {
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1166 port = atoi(&(info->bosip[i+1]));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1167 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1168 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1169 }
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1170 host = g_strndup(info->bosip, i);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1171 bosconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
1172 rc = gaim_proxy_connect(gc->account, host, port, oscar_bos_connect, gc);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1173 g_free(host);
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
1174 if (rc < 0) {
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1175 gaim_connection_error(gc, _("Could Not Connect"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1176 od->killme = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1177 return 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1178 }
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
1179 aim_sendcookie(sess, bosconn, info->cookielen, info->cookie);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1180 gaim_input_remove(gc->inpa);
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1181
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1182 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1183 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1184
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1185 struct pieceofcrap {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1186 GaimConnection *gc;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1187 unsigned long offset;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1188 unsigned long len;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1189 char *modname;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1190 int fd;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1191 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1192 unsigned int inpa;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1193 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1194
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1195 static void damn_you(gpointer data, gint source, GaimInputCondition c)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1196 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1197 struct pieceofcrap *pos = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1198 struct oscar_data *od = pos->gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1199 char in = '\0';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1200 int x = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1201 unsigned char m[17];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1202
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1203 while (read(pos->fd, &in, 1) == 1) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1204 if (in == '\n')
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1205 x++;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1206 else if (in != '\r')
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1207 x = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1208 if (x == 2)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1209 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1210 in = '\0';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1211 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1212 if (in != '\n') {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1213 char buf[256];
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1214 g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. You may want to use TOC until "
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
1215 "this is fixed. Check %s for updates."), GAIM_WEBSITE);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1216 gaim_notify_warning(pos->gc, NULL,
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1217 _("Gaim was Unable to get a valid AIM login hash."),
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1218 buf);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1219 gaim_input_remove(pos->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1220 close(pos->fd);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1221 g_free(pos);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1222 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1223 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1224 read(pos->fd, m, 16);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1225 m[16] = '\0';
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1226 gaim_debug(GAIM_DEBUG_MISC, "oscar", "Sending hash: ");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1227 for (x = 0; x < 16; x++)
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1228 gaim_debug(GAIM_DEBUG_MISC, NULL, "%02hhx ", (unsigned char)m[x]);
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1229
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1230 gaim_debug(GAIM_DEBUG_MISC, NULL, "\n");
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1231 gaim_input_remove(pos->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1232 close(pos->fd);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1233 aim_sendmemblock(od->sess, pos->conn, 0, 16, m, AIM_SENDMEMBLOCK_FLAG_ISHASH);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1234 g_free(pos);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1235 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1236
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1237 static void straight_to_hell(gpointer data, gint source, GaimInputCondition cond) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1238 struct pieceofcrap *pos = data;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
1239 gchar *buf;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1240
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
1241 pos->fd = source;
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
1242
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1243 if (source < 0) {
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
1244 buf = g_strdup_printf(_("You may be disconnected shortly. You may want to use TOC until "
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
1245 "this is fixed. Check %s for updates."), GAIM_WEBSITE);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1246 gaim_notify_warning(pos->gc, NULL,
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1247 _("Gaim was Unable to get a valid AIM login hash."),
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1248 buf);
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
1249 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1250 if (pos->modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1251 g_free(pos->modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1252 g_free(pos);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1253 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1254 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1255
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
1256 buf = g_strdup_printf("GET " AIMHASHDATA "?offset=%ld&len=%ld&modname=%s HTTP/1.0\n\n",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1257 pos->offset, pos->len, pos->modname ? pos->modname : "");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1258 write(pos->fd, buf, strlen(buf));
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
1259 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1260 if (pos->modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1261 g_free(pos->modname);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1262 pos->inpa = gaim_input_add(pos->fd, GAIM_INPUT_READ, damn_you, pos);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1263 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1264 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1265
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1266 /* size of icbmui.ocm, the largest module in AIM 3.5 */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1267 #define AIM_MAX_FILE_SIZE 98304
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1268
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1269 int gaim_memrequest(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1270 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1271 struct pieceofcrap *pos;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1272 fu32_t offset, len;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1273 char *modname;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1274
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1275 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
1276 offset = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
1277 len = va_arg(ap, fu32_t);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1278 modname = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1279 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1280
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1281 gaim_debug(GAIM_DEBUG_MISC, "oscar",
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
1282 "offset: %u, len: %u, file: %s\n",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1283 offset, len, (modname ? modname : "aim.exe"));
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1284
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1285 if (len == 0) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1286 gaim_debug(GAIM_DEBUG_MISC, "oscar", "len is 0, hashing NULL\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1287 aim_sendmemblock(sess, fr->conn, offset, len, NULL,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1288 AIM_SENDMEMBLOCK_FLAG_ISREQUEST);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1289 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1290 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1291 /* uncomment this when you're convinced it's right. remember, it's been wrong before.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1292 if (offset > AIM_MAX_FILE_SIZE || len > AIM_MAX_FILE_SIZE) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1293 char *buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1294 int i = 8;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1295 if (modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1296 i += strlen(modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1297 buf = g_malloc(i);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1298 i = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1299 if (modname) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1300 memcpy(buf, modname, strlen(modname));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1301 i += strlen(modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1302 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1303 buf[i++] = offset & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1304 buf[i++] = (offset >> 8) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1305 buf[i++] = (offset >> 16) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1306 buf[i++] = (offset >> 24) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1307 buf[i++] = len & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1308 buf[i++] = (len >> 8) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1309 buf[i++] = (len >> 16) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1310 buf[i++] = (len >> 24) & 0xff;
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1311 gaim_debug(GAIM_DEBUG_MISC, "oscar", "len + offset is invalid, "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1312 "hashing request\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1313 aim_sendmemblock(sess, command->conn, offset, i, buf, AIM_SENDMEMBLOCK_FLAG_ISREQUEST);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1314 g_free(buf);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1315 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1316 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1317 */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1318
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1319 pos = g_new0(struct pieceofcrap, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1320 pos->gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1321 pos->conn = fr->conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1322
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1323 pos->offset = offset;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1324 pos->len = len;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1325 pos->modname = modname ? g_strdup(modname) : NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1326
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
1327 if (gaim_proxy_connect(pos->gc->account, "gaim.sourceforge.net", 80, straight_to_hell, pos) != 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1328 char buf[256];
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1329 if (pos->modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1330 g_free(pos->modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1331 g_free(pos);
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1332 g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. You may want to use TOC until "
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
1333 "this is fixed. Check %s for updates."), GAIM_WEBSITE);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1334 gaim_notify_warning(pos->gc, NULL,
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1335 _("Gaim was Unable to get a valid login hash."),
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1336 buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1337 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1338
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1339 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1340 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1341
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1342 static int gaim_parse_login(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1343 char *key;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1344 va_list ap;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1345 GaimConnection *gc = sess->aux_data;
5591
2327f0802baa [gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1346 GaimAccount *account = gaim_connection_get_account(gc);
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1347 GaimAccount *ac = gaim_connection_get_account(gc);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1348 struct oscar_data *od = gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1349
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1350 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1351 key = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1352 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1353
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1354 if (od->icq) {
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1355 struct client_info_s info = CLIENTINFO_ICQ_KNOWNGOOD;
5591
2327f0802baa [gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1356 aim_send_login(sess, fr->conn, gaim_account_get_username(ac),
2327f0802baa [gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1357 gaim_account_get_password(account), &info, key);
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1358 } else {
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1359 #if 0
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1360 struct client_info_s info = {"gaim", 4, 1, 2010, "us", "en", 0x0004, 0x0000, 0x04b};
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1361 #endif
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1362 struct client_info_s info = CLIENTINFO_AIM_KNOWNGOOD;
5591
2327f0802baa [gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1363 aim_send_login(sess, fr->conn, gaim_account_get_username(ac),
2327f0802baa [gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
1364 gaim_account_get_password(account), &info, key);
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1365 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1366
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1367 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1368 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1369
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1370 static int conninitdone_chat(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1371 GaimConnection *gc = sess->aux_data;
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1372 struct chat_connection *chatcon;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1373 static int id = 1;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1374
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1375 aim_conn_addhandler(sess, fr->conn, 0x000e, 0x0001, gaim_parse_genericerr, 0);
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1376 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_USERJOIN, gaim_chat_join, 0);
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1377 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_USERLEAVE, gaim_chat_leave, 0);
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1378 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_ROOMINFOUPDATE, gaim_chat_info_update, 0);
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1379 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_INCOMINGMSG, gaim_chat_incoming_msg, 0);
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1380
2672
5c9b7617a1f3 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
1381 aim_clientready(sess, fr->conn);
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1382
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1383 chatcon = find_oscar_chat_by_conn(gc, fr->conn);
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1384 chatcon->id = id;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1385 chatcon->cnv = serv_got_joined_chat(gc, id++, chatcon->show);
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1386
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1387 return 1;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1388 }
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1389
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1390 static int conninitdone_chatnav(aim_session_t *sess, aim_frame_t *fr, ...) {
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1391
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1392 aim_conn_addhandler(sess, fr->conn, 0x000d, 0x0001, gaim_parse_genericerr, 0);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1393 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CTN, AIM_CB_CTN_INFO, gaim_chatnav_info, 0);
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1394
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1395 aim_clientready(sess, fr->conn);
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1396
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1397 aim_chatnav_reqrights(sess, fr->conn);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1398
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1399 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1400 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1401
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1402 static int conninitdone_email(aim_session_t *sess, aim_frame_t *fr, ...) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1403
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1404 aim_conn_addhandler(sess, fr->conn, 0x0018, 0x0001, gaim_parse_genericerr, 0);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1405 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_EML, AIM_CB_EML_MAILSTATUS, gaim_email_parseupdate, 0);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1406
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1407 aim_email_sendcookies(sess, fr->conn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1408 aim_email_activate(sess, fr->conn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1409 aim_clientready(sess, fr->conn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1410
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1411 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1412 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1413
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1414 static int conninitdone_icon(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1415 GaimConnection *gc = sess->aux_data;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1416 struct oscar_data *od = gc->proto_data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1417
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1418 aim_conn_addhandler(sess, fr->conn, 0x0018, 0x0001, gaim_parse_genericerr, 0);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1419 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_ICO, AIM_CB_ICO_ERROR, gaim_icon_error, 0);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1420 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_ICO, AIM_CB_ICO_RESPONSE, gaim_icon_parseicon, 0);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1421
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1422 aim_clientready(sess, fr->conn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1423
4823
e855589fb088 [gaim-migrate @ 5148]
Roald Dahl
parents: 4822
diff changeset
1424 od->iconconnecting = FALSE;
e855589fb088 [gaim-migrate @ 5148]
Roald Dahl
parents: 4822
diff changeset
1425
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1426 if (od->icontimer)
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1427 g_source_remove(od->icontimer);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1428 od->icontimer = g_timeout_add(100, gaim_icon_timerfunc, gc);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1429
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1430 return 1;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1431 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1432
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1433 static void oscar_chatnav_connect(gpointer data, gint source, GaimInputCondition cond) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1434 GaimConnection *gc = data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1435 struct oscar_data *od;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1436 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1437 aim_conn_t *tstconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1438
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1439 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1440 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1441 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1442 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1443
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1444 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1445 sess = od->sess;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1446 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_CHATNAV);
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
1447 tstconn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1448
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1449 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1450 aim_conn_kill(sess, &tstconn);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1451 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1452 "unable to connect to chatnav server\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1453 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1454 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1455
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1456 aim_conn_completeconnect(sess, tstconn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1457 od->cnpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1458 gaim_debug(GAIM_DEBUG_INFO, "oscar", "chatnav: connected\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1459 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1460
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1461 static void oscar_auth_connect(gpointer data, gint source, GaimInputCondition cond)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1462 {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1463 GaimConnection *gc = data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1464 struct oscar_data *od;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1465 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1466 aim_conn_t *tstconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1467
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1468 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1469 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1470 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1471 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1472
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1473 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1474 sess = od->sess;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1475 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_AUTH);
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
1476 tstconn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1477
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1478 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1479 aim_conn_kill(sess, &tstconn);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1480 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1481 "unable to connect to authorizer\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1482 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1483 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1484
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1485 aim_conn_completeconnect(sess, tstconn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1486 od->paspa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1487 gaim_debug(GAIM_DEBUG_INFO, "oscar", "chatnav: connected\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1488 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1489
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1490 static void oscar_chat_connect(gpointer data, gint source, GaimInputCondition cond)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1491 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1492 struct chat_connection *ccon = data;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1493 GaimConnection *gc = ccon->gc;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1494 struct oscar_data *od;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1495 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1496 aim_conn_t *tstconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1497
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1498 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1499 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1500 g_free(ccon->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1501 g_free(ccon->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1502 g_free(ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1503 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1504 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1505
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1506 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1507 sess = od->sess;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1508 tstconn = ccon->conn;
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
1509 tstconn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1510
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1511 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1512 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1513 g_free(ccon->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1514 g_free(ccon->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1515 g_free(ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1516 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1517 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1518
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1519 aim_conn_completeconnect(sess, ccon->conn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1520 ccon->inpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1521 od->oscar_chats = g_slist_append(od->oscar_chats, ccon);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1522 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1523
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1524 static void oscar_email_connect(gpointer data, gint source, GaimInputCondition cond) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1525 GaimConnection *gc = data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1526 struct oscar_data *od;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1527 aim_session_t *sess;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1528 aim_conn_t *tstconn;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1529
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1530 if (!g_list_find(gaim_connections_get_all(), gc)) {
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1531 close(source);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1532 return;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1533 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1534
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1535 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1536 sess = od->sess;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1537 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_EMAIL);
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
1538 tstconn->fd = source;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1539
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1540 if (source < 0) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1541 aim_conn_kill(sess, &tstconn);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1542 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1543 "unable to connect to email server\n");
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1544 return;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1545 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1546
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1547 aim_conn_completeconnect(sess, tstconn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1548 od->emlpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1549 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1550 "email: connected\n");
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1551 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1552
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1553 static void oscar_icon_connect(gpointer data, gint source, GaimInputCondition cond) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1554 GaimConnection *gc = data;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1555 struct oscar_data *od;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1556 aim_session_t *sess;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1557 aim_conn_t *tstconn;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1558
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1559 if (!g_list_find(gaim_connections_get_all(), gc)) {
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1560 close(source);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1561 return;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1562 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1563
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1564 od = gc->proto_data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1565 sess = od->sess;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1566 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_ICON);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1567 tstconn->fd = source;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1568
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1569 if (source < 0) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1570 aim_conn_kill(sess, &tstconn);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1571 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1572 "unable to connect to icon server\n");
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1573 return;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1574 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1575
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1576 aim_conn_completeconnect(sess, tstconn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1577 od->icopa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1578 gaim_debug(GAIM_DEBUG_INFO, "oscar", "icon: connected\n");
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1579 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1580
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1581 /* Hrmph. I don't know how to make this look better. --mid */
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1582 static int gaim_handle_redirect(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1583 GaimConnection *gc = sess->aux_data;
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1584 GaimAccount *account = gaim_connection_get_account(gc);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1585 aim_conn_t *tstconn;
4452
1e5d62c19533 [gaim-migrate @ 4727]
Sean Egan <seanegan@pidgin.im>
parents: 4443
diff changeset
1586 int i;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1587 char *host;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1588 int port;
4821
9107fba2dbe5 [gaim-migrate @ 5146]
Mark Doliner <markdoliner@pidgin.im>
parents: 4820
diff changeset
1589 va_list ap;
9107fba2dbe5 [gaim-migrate @ 5146]
Mark Doliner <markdoliner@pidgin.im>
parents: 4820
diff changeset
1590 struct aim_redirect_data *redir;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1591
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1592 port = gaim_account_get_int(account, "port", FAIM_LOGIN_PORT);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1593
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1594 va_start(ap, fr);
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1595 redir = va_arg(ap, struct aim_redirect_data *);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1596 va_end(ap);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1597
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1598 for (i = 0; i < (int)strlen(redir->ip); i++) {
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1599 if (redir->ip[i] == ':') {
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1600 port = atoi(&(redir->ip[i+1]));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1601 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1602 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1603 }
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1604 host = g_strndup(redir->ip, i);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1605
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1606 switch(redir->group) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1607 case 0x7: /* Authorizer */
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1608 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1609 "Reconnecting with authorizor...\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1610 tstconn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1611 if (tstconn == NULL) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1612 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1613 "unable to reconnect with authorizer\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1614 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1615 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1616 }
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
1617 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1618 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_admin, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1619 aim_conn_addhandler(sess, tstconn, 0x0007, 0x0003, gaim_info_change, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1620 aim_conn_addhandler(sess, tstconn, 0x0007, 0x0005, gaim_info_change, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1621 aim_conn_addhandler(sess, tstconn, 0x0007, 0x0007, gaim_account_confirm, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1622
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1623 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
1624 if (gaim_proxy_connect(account, host, port, oscar_auth_connect, gc) != 0) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1625 aim_conn_kill(sess, &tstconn);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1626 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1627 "unable to reconnect with authorizer\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1628 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1629 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1630 }
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
1631 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1632 break;
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1633
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1634 case 0xd: /* ChatNav */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1635 tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHATNAV, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1636 if (tstconn == NULL) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1637 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1638 "unable to connect to chatnav server\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1639 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1640 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1641 }
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
1642 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1643 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_chatnav, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1644
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1645 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
1646 if (gaim_proxy_connect(account, host, port, oscar_chatnav_connect, gc) != 0) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1647 aim_conn_kill(sess, &tstconn);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1648 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1649 "unable to connect to chatnav server\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1650 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1651 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1652 }
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
1653 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1654 break;
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1655
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1656 case 0xe: { /* Chat */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1657 struct chat_connection *ccon;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1658
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1659 tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHAT, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1660 if (tstconn == NULL) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1661 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1662 "unable to connect to chat server\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1663 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1664 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1665 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1666
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
1667 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1668 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_chat, 0);
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1669
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1670 ccon = g_new0(struct chat_connection, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1671 ccon->conn = tstconn;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1672 ccon->gc = gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1673 ccon->fd = -1;
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1674 ccon->name = g_strdup(redir->chat.room);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1675 ccon->exchange = redir->chat.exchange;
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1676 ccon->instance = redir->chat.instance;
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1677 ccon->show = extract_name(redir->chat.room);
4634
c4318fc60090 [gaim-migrate @ 4941]
Nathan Walp <nwalp@pidgin.im>
parents: 4628
diff changeset
1678
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1679 ccon->conn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
1680 if (gaim_proxy_connect(account, host, port, oscar_chat_connect, ccon) != 0) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1681 aim_conn_kill(sess, &tstconn);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1682 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1683 "unable to connect to chat server\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1684 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1685 g_free(ccon->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1686 g_free(ccon->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1687 g_free(ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1688 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1689 }
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
1690 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1691 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1692 "Connected to chat room %s exchange %hu\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1693 ccon->name, ccon->exchange);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1694 } break;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1695
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1696 case 0x0010: { /* icon */
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1697 if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_ICON, NULL))) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1698 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1699 "unable to connect to icon server\n");
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1700 g_free(host);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1701 return 1;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1702 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1703 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1704 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_icon, 0);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1705
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1706 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
1707 if (gaim_proxy_connect(account, host, port, oscar_icon_connect, gc) != 0) {
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1708 aim_conn_kill(sess, &tstconn);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1709 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1710 "unable to connect to icon server\n");
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1711 g_free(host);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1712 return 1;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1713 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1714 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1715 } break;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1716
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1717 case 0x0018: { /* email */
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1718 if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_EMAIL, NULL))) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1719 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1720 "unable to connect to email server\n");
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1721 g_free(host);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1722 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1723 }
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
1724 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1725 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_email, 0);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1726
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1727 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
1728 if (gaim_proxy_connect(account, host, port, oscar_email_connect, gc) != 0) {
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1729 aim_conn_kill(sess, &tstconn);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1730 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1731 "unable to connect to email server\n");
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1732 g_free(host);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1733 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1734 }
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
1735 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1736 } break;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1737
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1738 default: /* huh? */
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1739 gaim_debug(GAIM_DEBUG_WARNING, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1740 "got redirect for unknown service 0x%04hx\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1741 redir->group);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1742 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1743 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1744
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1745 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1746 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1747 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1748
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1749 static int gaim_parse_oncoming(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1750 GaimConnection *gc = sess->aux_data;
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
1751 struct oscar_data *od = gc->proto_data;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
1752 struct buddyinfo *bi;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1753 time_t time_idle = 0, signon = 0;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1754 int type = 0;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1755 int caps = 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1756 va_list ap;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
1757 aim_userinfo_t *info;
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1758
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1759 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
1760 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1761 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1762
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1763 if (info->present & AIM_USERINFO_PRESENT_CAPABILITIES)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1764 caps = info->capabilities;
3267
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1765 if (info->flags & AIM_FLAG_ACTIVEBUDDY)
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1766 type |= UC_AB;
6318
494984c2ea4d [gaim-migrate @ 6817]
Mark Doliner <markdoliner@pidgin.im>
parents: 6310
diff changeset
1767 if (caps & AIM_CAPS_HIPTOP)
494984c2ea4d [gaim-migrate @ 6817]
Mark Doliner <markdoliner@pidgin.im>
parents: 6310
diff changeset
1768 type |= UC_HIPTOP;
3267
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1769
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1770 if (info->present & AIM_USERINFO_PRESENT_FLAGS) {
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1771 if (info->flags & AIM_FLAG_UNCONFIRMED)
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1772 type |= UC_UNCONFIRMED;
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1773 if (info->flags & AIM_FLAG_ADMINISTRATOR)
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1774 type |= UC_ADMIN;
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1775 if (info->flags & AIM_FLAG_AOL)
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1776 type |= UC_AOL;
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1777 if (info->flags & AIM_FLAG_FREE)
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1778 type |= UC_NORMAL;
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1779 if (info->flags & AIM_FLAG_AWAY)
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1780 type |= UC_UNAVAILABLE;
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1781 if (info->flags & AIM_FLAG_WIRELESS)
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1782 type |= UC_WIRELESS;
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
1783 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1784 if (info->present & AIM_USERINFO_PRESENT_ICQEXTSTATUS) {
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
1785 type = (info->icqinfo.status << 16);
3013
b937e542f50e [gaim-migrate @ 3026]
Sean Egan <seanegan@pidgin.im>
parents: 3009
diff changeset
1786 if (!(info->icqinfo.status & AIM_ICQ_STATE_CHAT) &&
b937e542f50e [gaim-migrate @ 3026]
Sean Egan <seanegan@pidgin.im>
parents: 3009
diff changeset
1787 (info->icqinfo.status != AIM_ICQ_STATE_NORMAL)) {
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1788 type |= UC_UNAVAILABLE;
3013
b937e542f50e [gaim-migrate @ 3026]
Sean Egan <seanegan@pidgin.im>
parents: 3009
diff changeset
1789 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1790 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1791
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1792 if (caps & AIM_CAPS_ICQ)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1793 caps ^= AIM_CAPS_ICQ;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1794
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1795 if (info->present & AIM_USERINFO_PRESENT_IDLE) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1796 time(&time_idle);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1797 time_idle -= info->idletime*60;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1798 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1799
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
1800 if (info->present & AIM_USERINFO_PRESENT_ONLINESINCE)
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
1801 signon = info->onlinesince;
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
1802 else if (info->present & AIM_USERINFO_PRESENT_SESSIONLEN)
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1803 signon = time(NULL) - info->sessionlen;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1804
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1805 if (!aim_sncmp(gaim_account_get_username(gaim_connection_get_account(gc)), info->sn))
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1806 gaim_connection_set_display_name(gc, info->sn);
2305
9ba346379088 [gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2303
diff changeset
1807
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
1808 bi = g_hash_table_lookup(od->buddyinfo, normalize(info->sn));
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
1809 if (!bi) {
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
1810 bi = g_new0(struct buddyinfo, 1);
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
1811 g_hash_table_insert(od->buddyinfo, g_strdup(normalize(info->sn)), bi);
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
1812 }
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
1813 bi->signon = info->onlinesince ? info->onlinesince : (info->sessionlen + time(NULL));
4829
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
1814 if (caps)
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
1815 bi->caps = caps;
4739
7263e3ceab43 [gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents: 4738
diff changeset
1816 bi->typingnot = FALSE;
7263e3ceab43 [gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents: 4738
diff changeset
1817 bi->ico_informed = FALSE;
6292
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
1818 free(bi->availmsg);
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
1819 if (info->availmsg)
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
1820 if (info->availmsg_encoding) {
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
1821 gchar *enc = g_strdup_printf("charset=\"%s\"", info->availmsg_encoding);
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
1822 bi->availmsg = oscar_encoding_to_utf8(enc, info->availmsg, info->availmsg_len);
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
1823 g_free(enc);
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
1824 } else {
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
1825 /* No explicit encoding means utf8. Yay. */
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
1826 bi->availmsg = g_strdup(info->availmsg);
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
1827 }
5837
e75d4061396e [gaim-migrate @ 6268]
Mark Doliner <markdoliner@pidgin.im>
parents: 5836
diff changeset
1828 else
6292
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
1829 bi->availmsg = NULL;
4732
a0857625cadb [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4705
diff changeset
1830
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1831 /* Server stored icon stuff */
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1832 if (info->iconcsumlen) {
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1833 char *b16, *saved_b16;
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1834 struct buddy *b;
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1835
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
1836 free(bi->iconcsum);
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
1837 bi->iconcsum = malloc(info->iconcsumlen);
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1838 memcpy(bi->iconcsum, info->iconcsum, info->iconcsumlen);
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1839 bi->iconcsumlen = info->iconcsumlen;
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1840 b16 = tobase16(bi->iconcsum, bi->iconcsumlen);
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1841 b = gaim_find_buddy(gc->account, info->sn);
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1842 saved_b16 = gaim_buddy_get_setting(b, "icon_checksum");
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1843 if (!b16 || !saved_b16 || strcmp(b16, saved_b16)) {
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1844 GSList *cur = od->requesticon;
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1845 while (cur && aim_sncmp((char *)cur->data, info->sn))
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1846 cur = cur->next;
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1847 if (!cur) {
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1848 od->requesticon = g_slist_append(od->requesticon, strdup(normalize(info->sn)));
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1849 if (od->icontimer)
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1850 g_source_remove(od->icontimer);
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1851 od->icontimer = g_timeout_add(500, gaim_icon_timerfunc, gc);
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1852 }
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1853 }
6053
d4f75efb6cbc [gaim-migrate @ 6503]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1854 g_free(saved_b16);
d4f75efb6cbc [gaim-migrate @ 6503]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
1855 g_free(b16);
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1856 }
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1857
5628
1ff32ba9ee18 [gaim-migrate @ 6035]
Ryan McCabe
parents: 5591
diff changeset
1858 serv_got_update(gc, info->sn, 1, (info->warnlevel/10.0) + 0.5, signon, time_idle, type);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1859
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1860 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1861 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1862
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1863 static int gaim_parse_offgoing(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1864 GaimConnection *gc = sess->aux_data;
5837
e75d4061396e [gaim-migrate @ 6268]
Mark Doliner <markdoliner@pidgin.im>
parents: 5836
diff changeset
1865 struct oscar_data *od = gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1866 va_list ap;
4739
7263e3ceab43 [gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents: 4738
diff changeset
1867 aim_userinfo_t *info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1868
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1869 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
1870 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1871 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1872
4732
a0857625cadb [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4705
diff changeset
1873 serv_got_update(gc, info->sn, 0, 0, 0, 0, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1874
5837
e75d4061396e [gaim-migrate @ 6268]
Mark Doliner <markdoliner@pidgin.im>
parents: 5836
diff changeset
1875 g_hash_table_remove(od->buddyinfo, normalize(info->sn));
e75d4061396e [gaim-migrate @ 6268]
Mark Doliner <markdoliner@pidgin.im>
parents: 5836
diff changeset
1876
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1877 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1878 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1879
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1880 static void cancel_direct_im(struct ask_direct *d) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1881 gaim_debug(GAIM_DEBUG_INFO, "oscar", "Freeing DirectIM prompts.\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1882
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1883 g_free(d->sn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1884 g_free(d);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1885 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1886
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1887 static void oscar_odc_callback(gpointer data, gint source, GaimInputCondition condition) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1888 struct direct_im *dim = data;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1889 GaimConnection *gc = dim->gc;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1890 struct oscar_data *od = gc->proto_data;
5679
943eb70954b6 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
1891 GaimConversation *cnv;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1892 char buf[256];
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1893 struct sockaddr name;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1894 socklen_t name_len = 1;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1895
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1896 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1897 g_free(dim);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1898 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1899 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1900
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1901 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1902 g_free(dim);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1903 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1904 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1905
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
1906 dim->conn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1907 aim_conn_completeconnect(od->sess, dim->conn);
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
1908 if (!(cnv = gaim_find_conversation(dim->name)))
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
1909 cnv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, dim->name);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1910
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1911 /* This is the best way to see if we're connected or not */
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1912 if (getpeername(source, &name, &name_len) == 0) {
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1913 g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), dim->name);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1914 dim->connected = TRUE;
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6498
diff changeset
1915 gaim_conversation_write(cnv, NULL, buf, -1, GAIM_MESSAGE_SYSTEM, time(NULL));
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1916 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1917 od->direct_ims = g_slist_append(od->direct_ims, dim);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1918
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1919 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, oscar_callback, dim->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1920 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1921
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1922 /* BBB */
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1923 /*
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1924 * This is called after a remote AIM user has connected to us. We
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1925 * want to do some voodoo with the socket file descriptors, add a
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1926 * callback or two, and then send the AIM_CB_OFT_PROMPT.
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1927 */
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1928 static int oscar_sendfile_estblsh(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1929 GaimConnection *gc = sess->aux_data;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1930 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1931 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1932 struct aim_oft_info *oft_info;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1933 va_list ap;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1934 aim_conn_t *conn, *listenerconn;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1935
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1936 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1937 "AAA - in oscar_sendfile_estblsh\n");
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1938 va_start(ap, fr);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1939 conn = va_arg(ap, aim_conn_t *);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1940 listenerconn = va_arg(ap, aim_conn_t *);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1941 va_end(ap);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1942
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1943 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, listenerconn)))
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1944 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1945
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1946 if (!(oft_info = xfer->data))
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1947 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1948
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1949 /* Stop watching listener conn; watch transfer conn instead */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1950 gaim_input_remove(xfer->watcher);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1951 aim_conn_kill(sess, &listenerconn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1952
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1953 oft_info->conn = conn;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1954 xfer->fd = oft_info->conn->fd;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1955
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1956 aim_conn_addhandler(sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_ACK, oscar_sendfile_ack, 0);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1957 aim_conn_addhandler(sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DONE, oscar_sendfile_done, 0);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1958 xfer->watcher = gaim_input_add(oft_info->conn->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1959
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1960 /* Inform the other user that we are connected and ready to transfer */
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1961 aim_oft_sendheader(sess, AIM_CB_OFT_PROMPT, oft_info);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1962
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1963 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1964 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1965
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1966 /*
5681
514fbc5374dc [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
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1968 * user in order to transfer a file.
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1969 */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1970 static void oscar_sendfile_connected(gpointer data, gint source, GaimInputCondition condition) {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1971 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1972 struct aim_oft_info *oft_info;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1973
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1974 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1975 "AAA - in oscar_sendfile_connected\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1976 if (!(xfer = data))
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1977 return;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1978 if (!(oft_info = xfer->data))
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1979 return;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1980 if (source < 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1981 return;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1982
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1983 xfer->fd = source;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1984 oft_info->conn->fd = source;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1985
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1986 aim_conn_completeconnect(oft_info->sess, oft_info->conn);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1987 xfer->watcher = gaim_input_add(xfer->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1988
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1989 /* Inform the other user that we are connected and ready to transfer */
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1990 aim_im_sendch2_sendfile_accept(oft_info->sess, oft_info);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1991
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1992 return;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1993 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1994
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1995 /*
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1996 * This is called when a buddy sends us some file info. This happens when they
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1997 * are sending a file to you, and you have just established a connection to them.
4650
5b2338bb19fd [gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents: 4649
diff changeset
1998 * You should send them the exact same info except use the real cookie. We also
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1999 * get like totally ready to like, receive the file, kay?
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
2000 */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2001 static int oscar_sendfile_prompt(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2002 GaimConnection *gc = sess->aux_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2003 struct oscar_data *od = gc->proto_data;
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
2004 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2005 struct aim_oft_info *oft_info;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2006 va_list ap;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2007 aim_conn_t *conn;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2008 fu8_t *cookie;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2009 struct aim_fileheader_t *fh;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
2010
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2011 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2012 "AAA - in oscar_sendfile_prompt\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2013 va_start(ap, fr);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2014 conn = va_arg(ap, aim_conn_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2015 cookie = va_arg(ap, fu8_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2016 fh = va_arg(ap, struct aim_fileheader_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2017 va_end(ap);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2018
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2019 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn)))
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2020 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2021
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2022 if (!(oft_info = xfer->data))
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2023 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2024
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2025 /* We want to stop listening with a normal thingy */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2026 gaim_input_remove(xfer->watcher);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2027 xfer->watcher = 0;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2028
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2029 /* They sent us some information about the file they're sending */
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2030 memcpy(&oft_info->fh, fh, sizeof(*fh));
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2031
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2032 /* Fill in the cookie */
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2033 memcpy(&oft_info->fh.bcookie, oft_info->cookie, 8);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2034
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
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
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2036 aim_oft_sendheader(oft_info->sess, AIM_CB_OFT_ACK, oft_info);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2037 gaim_xfer_start(xfer, xfer->fd, NULL, 0);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2038
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2039 return 0;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2040 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2041
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
2042 /*
4657
24c70a9dec22 [gaim-migrate @ 4968]
Mark Doliner <markdoliner@pidgin.im>
parents: 4656
diff changeset
2043 * We are sending a file to someone else. They have just acknowledged our
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2044 * prompt, so we want to start sending data like there's no tomorrow.
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
2045 */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2046 static int oscar_sendfile_ack(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2047 GaimConnection *gc = sess->aux_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2048 struct oscar_data *od = gc->proto_data;
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
2049 GaimXfer *xfer;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2050 va_list ap;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2051 aim_conn_t *conn;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2052 fu8_t *cookie;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2053 struct aim_fileheader_t *fh;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
2054
5219
49255563aa61 [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
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2056 va_start(ap, fr);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2057 conn = va_arg(ap, aim_conn_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2058 cookie = va_arg(ap, fu8_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2059 fh = va_arg(ap, struct aim_fileheader_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2060 va_end(ap);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2061
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2062 if (!(xfer = oscar_find_xfer_by_cookie(od->file_transfers, cookie)))
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2063 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2064
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
2065 /* We want to stop listening with a normal thingy */
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
2066 gaim_input_remove(xfer->watcher);
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
2067 xfer->watcher = 0;
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
2068
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2069 gaim_xfer_start(xfer, xfer->fd, NULL, 0);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2070
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2071 return 0;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2072 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2073
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2074 /*
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2075 * We just sent a file to someone. They said they got it and everything,
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2076 * so we can close our direct connection and what not.
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2077 */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2078 static int oscar_sendfile_done(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2079 GaimConnection *gc = sess->aux_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2080 struct oscar_data *od = gc->proto_data;
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
2081 GaimXfer *xfer;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2082 va_list ap;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2083 aim_conn_t *conn;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2084 fu8_t *cookie;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2085 struct aim_fileheader_t *fh;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
2086
5219
49255563aa61 [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
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2088 va_start(ap, fr);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2089 conn = va_arg(ap, aim_conn_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2090 cookie = va_arg(ap, fu8_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2091 fh = va_arg(ap, struct aim_fileheader_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2092 va_end(ap);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2093
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2094 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn)))
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2095 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2096
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
2097 xfer->fd = conn->fd;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2098 gaim_xfer_end(xfer);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2099
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2100 return 0;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2101 }
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2102
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2103 static void accept_direct_im(struct ask_direct *d) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2104 GaimConnection *gc = d->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2105 struct oscar_data *od;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2106 struct direct_im *dim;
2945
839d36ea8de6 [gaim-migrate @ 2958]
Rob Flynn <gaim@robflynn.com>
parents: 2943
diff changeset
2107 char *host; int port = 4443;
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
2108 int i, rc;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2109
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2110 if (!g_list_find(gaim_connections_get_all(), gc)) {
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2111 cancel_direct_im(d);
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2112 return;
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2113 }
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2114
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2115 od = (struct oscar_data *)gc->proto_data;
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2116 gaim_debug(GAIM_DEBUG_INFO, "oscar", "Accepted DirectIM.\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2117
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2118 dim = find_direct_im(od, d->sn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2119 if (dim) {
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
2120 cancel_direct_im(d); /* 40 */
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2121 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2122 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2123 dim = g_new0(struct direct_im, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2124 dim->gc = d->gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2125 g_snprintf(dim->name, sizeof dim->name, "%s", d->sn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2126
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2127 dim->conn = aim_odc_connect(od->sess, d->sn, NULL, d->cookie);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2128 if (!dim->conn) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2129 g_free(dim);
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
2130 cancel_direct_im(d);
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2131 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2132 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2133
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2134 aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING,
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2135 gaim_odc_incoming, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2136 aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING,
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2137 gaim_odc_typing, 0);
3033
1f078ab46e76 [gaim-migrate @ 3046]
Sean Egan <seanegan@pidgin.im>
parents: 3031
diff changeset
2138 aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_IMAGETRANSFER,
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2139 gaim_update_ui, 0);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2140 for (i = 0; i < (int)strlen(d->ip); i++) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2141 if (d->ip[i] == ':') {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2142 port = atoi(&(d->ip[i+1]));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2143 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2144 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2145 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2146 host = g_strndup(d->ip, i);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2147 dim->conn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [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
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2149 g_free(host);
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
2150 if (rc < 0) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2151 aim_conn_kill(od->sess, &dim->conn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2152 g_free(dim);
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
2153 cancel_direct_im(d);
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2154 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2155 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2156
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
2157 cancel_direct_im(d);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2158
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2159 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2160 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2161
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
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
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2163 GaimConnection *gc = sess->aux_data;
3600
776215788f43 [gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents: 3596
diff changeset
2164 struct oscar_data *od = gc->proto_data;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2165 char *tmp;
2273
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2249
diff changeset
2166 int flags = 0;
6478
2c3fe7c8659b [gaim-migrate @ 6991]
Robert McQueen <robot101@debian.org>
parents: 6465
diff changeset
2167 gsize convlen;
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
2168 GError *err = NULL;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2169 struct buddyinfo *bi;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2170 const char *iconfile;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2171
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2172 bi = g_hash_table_lookup(od->buddyinfo, normalize(userinfo->sn));
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2173 if (!bi) {
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2174 bi = g_new0(struct buddyinfo, 1);
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2175 g_hash_table_insert(od->buddyinfo, g_strdup(normalize(userinfo->sn)), bi);
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2176 }
2273
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2249
diff changeset
2177
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2249
diff changeset
2178 if (args->icbmflags & AIM_IMFLAGS_AWAY)
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2249
diff changeset
2179 flags |= IM_FLAG_AWAY;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2180
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2181 if (args->icbmflags & AIM_IMFLAGS_TYPINGNOT)
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2182 bi->typingnot = TRUE;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2183 else
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2184 bi->typingnot = FALSE;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2185
4380
c7c7beab8e56 [gaim-migrate @ 4646]
Mark Doliner <markdoliner@pidgin.im>
parents: 4374
diff changeset
2186 if ((args->icbmflags & AIM_IMFLAGS_HASICON) && (args->iconlen) && (args->iconsum) && (args->iconstamp)) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2187 gaim_debug(GAIM_DEBUG_MISC, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2188 "%s has an icon\n", userinfo->sn);
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2189 if ((args->iconlen != bi->ico_len) || (args->iconsum != bi->ico_csum) || (args->iconstamp != bi->ico_time)) {
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2190 bi->ico_need = TRUE;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2191 bi->ico_len = args->iconlen;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2192 bi->ico_csum = args->iconsum;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2193 bi->ico_time = args->iconstamp;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2194 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2195 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2196
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2197 if ((iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc))) &&
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2198 (args->icbmflags & AIM_IMFLAGS_BUDDYREQ)) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2199 FILE *file;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2200 struct stat st;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2201
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2202 if (!stat(iconfile, &st)) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2203 char *buf = g_malloc(st.st_size);
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2204 file = fopen(iconfile, "rb");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2205 if (file) {
2603
0c39616168c9 [gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2597
diff changeset
2206 int len = fread(buf, 1, st.st_size, file);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2207 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2208 "Sending buddy icon to %s (%d bytes, "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2209 "%lu reported)\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2210 userinfo->sn, len, st.st_size);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2211 aim_im_sendch2_icon(sess, userinfo->sn, buf, st.st_size,
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2212 st.st_mtime, aimutil_iconsum(buf, st.st_size));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2213 fclose(file);
2336
43d65c408209 [gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2315
diff changeset
2214 } else
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2215 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2216 "Can't open buddy icon file!\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2217 g_free(buf);
2336
43d65c408209 [gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2315
diff changeset
2218 } else
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2219 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2220 "Can't stat buddy icon file!\n");
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2221 }
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2222
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2223 gaim_debug(GAIM_DEBUG_MISC, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2224 "Character set is %hu %hu\n", args->charset, args->charsubset);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2225 if (args->icbmflags & AIM_IMFLAGS_UNICODE) {
3722
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
2226 /* This message is marked as UNICODE, so we have to
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
2227 * convert it to utf-8 before handing it to the gaim core.
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
2228 * This conversion should *never* fail, if it does it
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
2229 * means that either the incoming ICBM is corrupted or
4662
740f32459759 [gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents: 4657
diff changeset
2230 * there is something we don't understand about it.
740f32459759 [gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents: 4657
diff changeset
2231 * For the record, AIM Unicode is big-endian UCS-2 */
740f32459759 [gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents: 4657
diff changeset
2232
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2233 gaim_debug(GAIM_DEBUG_INFO, "oscar", "Received UNICODE IM\n");
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2234
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2235 if (!args->msg || !args->msglen)
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2236 return 1;
4641
bcc6f5e3018a [gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
2237
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
2238 tmp = g_convert(args->msg, args->msglen, "UTF-8", "UCS-2BE", NULL, &convlen, &err);
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
2239 if (err) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2240 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2241 "Unicode IM conversion: %s\n", err->message);
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
2242 tmp = strdup(_("(There was an error receiving this message)"));
4800
b8a226b0ddca [gaim-migrate @ 5120]
Ethan Blanton <elb@pidgin.im>
parents: 4799
diff changeset
2243 g_error_free(err);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2244 }
3722
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
2245 } else {
3850
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
2246 /* This will get executed for both AIM_IMFLAGS_ISO_8859_1 and
3722
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
2247 * unflagged messages, which are ASCII. That's OK because
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
2248 * ASCII is a strict subset of ISO-8859-1; this should
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
2249 * help with compatibility with old, broken versions of
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
2250 * gaim (everything before 0.60) and other broken clients
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
2251 * that will happily send ISO-8859-1 without marking it as
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
2252 * such */
4662
740f32459759 [gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents: 4657
diff changeset
2253 if (args->icbmflags & AIM_IMFLAGS_ISO_8859_1)
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2254 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2255 "Received ISO-8859-1 IM\n");
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2256
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2257 if (!args->msg || !args->msglen)
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2258 return 1;
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2259
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
2260 tmp = g_convert(args->msg, args->msglen, "UTF-8", "ISO-8859-1", NULL, &convlen, &err);
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
2261 if (err) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2262 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2263 "ISO-8859-1 IM conversion: %s\n", err->message);
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
2264 tmp = strdup(_("(There was an error receiving this message)"));
4800
b8a226b0ddca [gaim-migrate @ 5120]
Ethan Blanton <elb@pidgin.im>
parents: 4799
diff changeset
2265 g_error_free(err);
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
2266 }
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
2267 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2268
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
2269 /* strip_linefeed(tmp); */
2856
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2833
diff changeset
2270 serv_got_im(gc, userinfo->sn, tmp, flags, time(NULL), -1);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2271 g_free(tmp);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2272
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2273 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2274 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2275
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
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
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2277 GaimConnection *gc = sess->aux_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2278 struct oscar_data *od = gc->proto_data;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2279 const char *username = gaim_account_get_username(gaim_connection_get_account(gc));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2280
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2281 if (!args)
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2282 return 0;
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2283
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2284 gaim_debug(GAIM_DEBUG_MISC, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2285 "rendezvous with %s, status is %hu\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2286 userinfo->sn, args->status);
2869
3165d3aff6c0 [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
2287
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2288 if (args->reqclass & AIM_CAPS_CHAT) {
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2289 char *name;
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
2290 GHashTable *components;
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
2291
4121
42fc01bee50b [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)
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2293 return 1;
5234
8320a1cb0274 [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,
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
2295 g_free);
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2296 name = extract_name(args->info.chat.roominfo.name);
5234
8320a1cb0274 [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));
8320a1cb0274 [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
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2299 serv_got_chat_invite(gc,
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2300 name ? name : args->info.chat.roominfo.name,
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2301 userinfo->sn,
6059
9934c862ca14 [gaim-migrate @ 6509]
John Silvestri <john.silvestri@gmail.com>
parents: 6053
diff changeset
2302 args->msg,
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
2303 components);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2304 if (name)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2305 g_free(name);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2306 } else if (args->reqclass & AIM_CAPS_SENDFILE) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2307 /* BBB */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2308 if (args->status == AIM_RENDEZVOUS_PROPOSE) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2309 /* Someone wants to send a file (or files) to us */
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
2310 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2311 struct aim_oft_info *oft_info;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2312
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2313 if (!args->cookie || !args->port || !args->verifiedip ||
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2314 !args->info.sendfile.filename || !args->info.sendfile.totsize ||
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
2315 !args->info.sendfile.totfiles || !args->reqclass) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2316 gaim_debug(GAIM_DEBUG_WARNING, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2317 "%s tried to send you a file with incomplete "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2318 "information.\n", userinfo->sn);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2319 if (args->proxyip)
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2320 gaim_debug(GAIM_DEBUG_WARNING, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2321 "IP for a proxy server was given. Gaim "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2322 "does not support this yet.\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2323 return 1;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
2324 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2325
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2326 if (args->info.sendfile.subtype == AIM_OFT_SUBTYPE_SEND_DIR) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2327 /* last char of the ft req is a star, they are sending us a
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2328 * directory -- remove the star and trailing slash so we dont save
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2329 * directories that look like 'dirname\*' -- arl */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2330 char *tmp = strrchr(args->info.sendfile.filename, '\\');
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2331 if (tmp && (tmp[1] == '*')) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2332 tmp[0] = '\0';
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2333 }
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2334 }
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2335
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2336 /* Build the file transfer handle */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2337 xfer = gaim_xfer_new(gc->account, GAIM_XFER_RECEIVE, userinfo->sn);
5163
c4e7e5cde47d [gaim-migrate @ 5527]
Mark Doliner <markdoliner@pidgin.im>
parents: 5149
diff changeset
2338 xfer->remote_ip = g_strdup(args->verifiedip);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2339 xfer->remote_port = args->port;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2340 gaim_xfer_set_filename(xfer, args->info.sendfile.filename);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2341 gaim_xfer_set_size(xfer, args->info.sendfile.totsize);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2342
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2343 /* Create the oscar-specific data */
5163
c4e7e5cde47d [gaim-migrate @ 5527]
Mark Doliner <markdoliner@pidgin.im>
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
285e9ff6eeb8 [gaim-migrate @ 5230]
Mark Doliner <markdoliner@pidgin.im>
parents: 4889
diff changeset
2345 if (args->proxyip)
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2346 oft_info->proxyip = g_strdup(args->proxyip);
4898
285e9ff6eeb8 [gaim-migrate @ 5230]
Mark Doliner <markdoliner@pidgin.im>
parents: 4889
diff changeset
2347 if (args->verifiedip)
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2348 oft_info->verifiedip = g_strdup(args->verifiedip);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2349 xfer->data = oft_info;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2350
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2351 /* Setup our I/O op functions */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2352 gaim_xfer_set_init_fnc(xfer, oscar_xfer_init);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2353 gaim_xfer_set_start_fnc(xfer, oscar_xfer_start);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2354 gaim_xfer_set_end_fnc(xfer, oscar_xfer_end);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
2355 gaim_xfer_set_cancel_send_fnc(xfer, oscar_xfer_cancel_send);
8e0a7b537ca2 [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
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2357 gaim_xfer_set_ack_fnc(xfer, oscar_xfer_ack);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2358
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2359 /*
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2360 * XXX - Should do something with args->msg, args->encoding, and args->language
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2361 * probably make it apply to all ch2 messages.
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2362 */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2363
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2364 /* Keep track of this transfer for later */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2365 od->file_transfers = g_slist_append(od->file_transfers, xfer);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2366
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2367 /* Now perform the request */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2368 gaim_xfer_request(xfer);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2369 } else if (args->status == AIM_RENDEZVOUS_CANCEL) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2370 /* The other user wants to cancel a file transfer */
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
2371 GaimXfer *xfer;
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2372 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2373 "AAA - File transfer canceled by remote user\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2374 if ((xfer = oscar_find_xfer_by_cookie(od->file_transfers, args->cookie)))
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
2375 gaim_xfer_cancel_remote(xfer);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2376 } else if (args->status == AIM_RENDEZVOUS_ACCEPT) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2377 /*
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2378 * This gets sent by the receiver of a file
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2379 * as they connect directly to us. If we don't
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2380 * get this, then maybe a third party connected
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2381 * to us, and we shouldn't send them anything.
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2382 */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2383 } else {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2384 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2385 "unknown rendezvous status!\n");
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2386 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2387 } else if (args->reqclass & AIM_CAPS_GETFILE) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2388 } else if (args->reqclass & AIM_CAPS_VOICE) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2389 } else if (args->reqclass & AIM_CAPS_BUDDYICON) {
4799
9b612e91f725 [gaim-migrate @ 5119]
Nathan Walp <nwalp@pidgin.im>
parents: 4798
diff changeset
2390 set_icon_data(gc, userinfo->sn, args->info.icon.icon,
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2391 args->info.icon.length);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2392 } else if (args->reqclass & AIM_CAPS_IMIMAGE) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2393 struct ask_direct *d = g_new0(struct ask_direct, 1);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2394 char buf[256];
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2395
4212
1a596d7f28ae [gaim-migrate @ 4449]
Brandon Scott
parents: 4207
diff changeset
2396 if (!args->verifiedip) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2397 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2398 "directim kill blocked (%s)\n", userinfo->sn);
4650
5b2338bb19fd [gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents: 4649
diff changeset
2399 return 1;
4212
1a596d7f28ae [gaim-migrate @ 4449]
Brandon Scott
parents: 4207
diff changeset
2400 }
1a596d7f28ae [gaim-migrate @ 4449]
Brandon Scott
parents: 4207
diff changeset
2401
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2402 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2403 "%s received direct im request from %s (%s)\n",
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2404 username, userinfo->sn, args->verifiedip);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2405
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2406 d->gc = gc;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2407 d->sn = g_strdup(userinfo->sn);
2869
3165d3aff6c0 [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
2408 strncpy(d->ip, args->verifiedip, sizeof(d->ip));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2409 memcpy(d->cookie, args->cookie, 8);
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2410 g_snprintf(buf, sizeof buf, _("%s has just asked to directly connect to %s"), userinfo->sn, username);
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2411
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2412 gaim_request_action(gc, NULL, buf,
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2413 _("This requires a direct connection between "
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2414 "the two computers and is necessary for IM "
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2415 "Images. Because your IP address will be "
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2416 "revealed, this may be considered a privacy "
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2417 "risk."), 0, d, 2,
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2418 _("Connect"), G_CALLBACK(accept_direct_im),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2419 _("Cancel"), G_CALLBACK(cancel_direct_im));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2420 } else {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2421 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2422 "Unknown reqclass %hu\n", args->reqclass);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2423 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2424
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2425 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2426 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2427
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2428 /*
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2429 * Authorization Functions
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2430 * Most of these are callbacks from dialogs. They're used by both
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2431 * methods of authorization (SSI and old-school channel 4 ICBM)
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2432 */
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2433 /* When you ask other people for authorization */
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2434 static void gaim_auth_request(struct name_data *data, char *msg) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2435 GaimConnection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2436
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2437 if (g_list_find(gaim_connections_get_all(), gc)) {
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2438 struct oscar_data *od = gc->proto_data;
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
2439 struct buddy *buddy = gaim_find_buddy(gc->account, data->name);
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
2440 struct group *group = gaim_find_buddys_group(buddy);
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2441 if (buddy && group) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2442 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2443 "ssi: adding buddy %s to group %s\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2444 buddy->name, group->name);
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
2445 aim_ssi_sendauthrequest(od->sess, data->name, msg ? msg : _("Please authorize me so I can add you to my buddy list."));
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2446 if (!aim_ssi_itemlist_finditem(od->sess->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
2447 aim_ssi_addbuddy(od->sess, buddy->name, group->name, gaim_get_buddy_alias_only(buddy), NULL, NULL, 1);
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2448 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2449 }
4337
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
2450 }
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
2451
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
2452 static void gaim_auth_request_msgprompt(struct name_data *data) {
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
2453 gaim_request_input(data->gc, NULL, _("Authorization Request Message:"),
6035
b245be9cbe3b [gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents: 6029
diff changeset
2454 NULL, _("Please authorize me!"), TRUE, FALSE,
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
2455 _("OK"), G_CALLBACK(gaim_auth_request),
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
2456 _("Cancel"), G_CALLBACK(oscar_free_name_data),
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
2457 data);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2458 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2459
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2460 static void gaim_auth_dontrequest(struct name_data *data) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2461 GaimConnection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2462
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2463 if (g_list_find(gaim_connections_get_all(), gc)) {
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2464 /* struct oscar_data *od = gc->proto_data; */
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2465 /* XXX - Take the buddy out of our buddy list */
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2466 }
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2467
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
2468 oscar_free_name_data(data);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2469 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2470
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2471 static void gaim_auth_sendrequest(GaimConnection *gc, const char *name) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2472 struct name_data *data = g_new(struct name_data, 1);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2473 struct buddy *buddy;
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2474 gchar *dialog_msg, *nombre;
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2475
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
2476 buddy = gaim_find_buddy(gc->account, name);
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
2477 if (buddy && (gaim_get_buddy_alias_only(buddy)))
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
2478 nombre = g_strdup_printf("%s (%s)", name, gaim_get_buddy_alias_only(buddy));
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2479 else
4830
d0f1945b27b7 [gaim-migrate @ 5155]
Mark Doliner <markdoliner@pidgin.im>
parents: 4829
diff changeset
2480 nombre = NULL;
d0f1945b27b7 [gaim-migrate @ 5155]
Mark Doliner <markdoliner@pidgin.im>
parents: 4829
diff changeset
2481
d0f1945b27b7 [gaim-migrate @ 5155]
Mark Doliner <markdoliner@pidgin.im>
parents: 4829
diff changeset
2482 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
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2483 data->gc = gc;
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2484 data->name = g_strdup(name);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2485 data->nick = NULL;
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2486
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2487 gaim_request_action(gc, NULL, _("Request Authorization"), dialog_msg,
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2488 0, data, 2,
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2489 _("Request Authorization"),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2490 G_CALLBACK(gaim_auth_request_msgprompt),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2491 _("Cancel"), G_CALLBACK(gaim_auth_dontrequest));
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2492
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2493 g_free(dialog_msg);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2494 g_free(nombre);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2495 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2496
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2497 /* When other people ask you for authorization */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2498 static void gaim_auth_grant(struct name_data *data) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2499 GaimConnection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2500
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2501 if (g_list_find(gaim_connections_get_all(), gc)) {
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2502 struct oscar_data *od = gc->proto_data;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
2503 #ifdef NOSSI
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2504 struct buddy *buddy;
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2505 gchar message;
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2506 message = 0;
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
2507 buddy = gaim_find_buddy(gc->account, data->name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2508 aim_im_sendch4(od->sess, data->name, AIM_ICQMSG_AUTHGRANTED, &message);
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
2509 show_got_added(gc, NULL, data->name, (buddy ? gaim_get_buddy_alias_only(buddy) : NULL), NULL);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2510 #else
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
2511 aim_ssi_sendauthreply(od->sess, data->name, 0x01, NULL);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2512 #endif
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2513 }
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2514
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
2515 oscar_free_name_data(data);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2516 }
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2517
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2518 /* When other people ask you for authorization */
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2519 static void gaim_auth_dontgrant(struct name_data *data, char *msg) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2520 GaimConnection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2521
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2522 if (g_list_find(gaim_connections_get_all(), gc)) {
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2523 struct oscar_data *od = gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2524 #ifdef NOSSI
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2525 aim_im_sendch4(od->sess, data->name, AIM_ICQMSG_AUTHDENIED, msg ? msg : _("No reason given."));
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2526 #else
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
2527 aim_ssi_sendauthreply(od->sess, data->name, 0x00, msg ? msg : _("No reason given."));
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2528 #endif
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2529 }
4337
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
2530 }
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
2531
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
2532 static void gaim_auth_dontgrant_msgprompt(struct name_data *data) {
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
2533 gaim_request_input(data->gc, NULL, _("Authorization Denied Message:"),
6035
b245be9cbe3b [gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents: 6029
diff changeset
2534 NULL, _("No reason given."), TRUE, FALSE,
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
2535 _("OK"), G_CALLBACK(gaim_auth_dontgrant),
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
2536 _("Cancel"), G_CALLBACK(oscar_free_name_data),
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
2537 data);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2538 }
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2539
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2540 /* When someone sends you contacts */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2541 static void gaim_icq_contactadd(struct name_data *data) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2542 GaimConnection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2543
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2544 if (g_list_find(gaim_connections_get_all(), gc)) {
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2545 show_add_buddy(gc, data->name, NULL, data->nick);
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2546 }
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2547
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
2548 oscar_free_name_data(data);
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2549 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2550
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2551 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
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2552 GaimConnection *gc = sess->aux_data;
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2553 gchar **msg1, **msg2;
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2554 GError *err = NULL;
6051
6d481c30603c [gaim-migrate @ 6501]
Mark Doliner <markdoliner@pidgin.im>
parents: 6040
diff changeset
2555 int i, numtoks;
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2556
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2557 if (!args->type || !args->msg || !args->uin)
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2558 return 1;
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2559
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2560 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2561 "Received a channel 4 message of type 0x%02hhx.\n", args->type);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2562
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2563 /* Split up the message at the delimeter character, then convert each string to UTF-8 */
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2564 msg1 = g_strsplit(args->msg, "\376", 0);
6051
6d481c30603c [gaim-migrate @ 6501]
Mark Doliner <markdoliner@pidgin.im>
parents: 6040
diff changeset
2565 for (numtoks=0; msg1[numtoks]; numtoks++);
6d481c30603c [gaim-migrate @ 6501]
Mark Doliner <markdoliner@pidgin.im>
parents: 6040
diff changeset
2566 msg2 = (gchar **)g_malloc((numtoks+1)*sizeof(gchar *));
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2567 for (i=0; msg1[i]; i++) {
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2568 strip_linefeed(msg1[i]);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2569 msg2[i] = g_convert(msg1[i], strlen(msg1[i]), "UTF-8", "ISO-8859-1", NULL, NULL, &err);
4800
b8a226b0ddca [gaim-migrate @ 5120]
Ethan Blanton <elb@pidgin.im>
parents: 4799
diff changeset
2570 if (err) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2571 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2572 "Error converting a string from ISO-8859-1 to "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2573 "UTF-8 in oscar ICBM channel 4 parsing\n");
4800
b8a226b0ddca [gaim-migrate @ 5120]
Ethan Blanton <elb@pidgin.im>
parents: 4799
diff changeset
2574 g_error_free(err);
b8a226b0ddca [gaim-migrate @ 5120]
Ethan Blanton <elb@pidgin.im>
parents: 4799
diff changeset
2575 }
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2576 }
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2577 msg2[i] = NULL;
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2578
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
2579 switch (args->type) {
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2580 case 0x01: { /* MacICQ message or basic offline message */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2581 if (i >= 1) {
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
2582 gchar *uin = g_strdup_printf("%u", args->uin);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2583 if (t) { /* This is an offline message */
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2584 /* I think this timestamp is in UTC, or something */
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2585 serv_got_im(gc, uin, msg2[0], 0, t, -1);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2586 } else { /* This is a message from MacICQ/Miranda */
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2587 serv_got_im(gc, uin, msg2[0], 0, time(NULL), -1);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2588 }
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2589 g_free(uin);
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2590 }
3316
43bb95f6167a [gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents: 3279
diff changeset
2591 } break;
43bb95f6167a [gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents: 3279
diff changeset
2592
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2593 case 0x04: { /* Someone sent you a URL */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2594 if (i >= 2) {
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
2595 gchar *uin = g_strdup_printf("%u", args->uin);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2596 gchar *message = g_strdup_printf("<A HREF=\"%s\">%s</A>", msg2[1], msg2[0]);
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2597 serv_got_im(gc, uin, message, 0, time(NULL), -1);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2598 g_free(uin);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2599 g_free(message);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2600 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2601 } break;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2602
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2603 case 0x06: { /* Someone requested authorization */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2604 if (i >= 6) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2605 struct name_data *data = g_new(struct name_data, 1);
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
2606 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
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2607 gaim_debug(GAIM_DEBUG_INFO, "oscar",
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
2608 "Received an authorization request from UIN %u\n",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2609 args->uin);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2610 data->gc = gc;
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
2611 data->name = g_strdup_printf("%u", args->uin);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2612 data->nick = NULL;
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2613
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2614 gaim_request_action(gc, NULL, _("Authorization Request"),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2615 dialog_msg, 0, data, 2,
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2616 _("Authorize"),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2617 G_CALLBACK(gaim_auth_grant),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2618 _("Deny"),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2619 G_CALLBACK(gaim_auth_dontgrant_msgprompt));
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2620 g_free(dialog_msg);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2621 }
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2622 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2623
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2624 case 0x07: { /* Someone has denied you authorization */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2625 if (i >= 1) {
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
2626 gchar *dialog_msg = g_strdup_printf(_("The user %u has denied your request to add them to your contact list for the following reason:\n%s"), args->uin, msg2[0] ? msg2[0] : _("No reason given."));
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2627 gaim_notify_info(gc, NULL, _("ICQ authorization denied."),
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2628 dialog_msg);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2629 g_free(dialog_msg);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2630 }
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2631 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2632
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2633 case 0x08: { /* Someone has granted you authorization */
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
2634 gchar *dialog_msg = g_strdup_printf(_("The user %u has granted your request to add them to your contact list."), args->uin);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2635 gaim_notify_info(gc, NULL, "ICQ authorization accepted.",
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2636 dialog_msg);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2637 g_free(dialog_msg);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2638 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2639
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
2640 case 0x09: { /* Message from the Godly ICQ server itself, I think */
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
2641 if (i >= 5) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
2642 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
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2643 gaim_notify_info(gc, NULL, "ICQ Server Message", dialog_msg);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
2644 g_free(dialog_msg);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
2645 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
2646 } break;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
2647
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2648 case 0x0d: { /* Someone has sent you a pager message from http://www.icq.com/your_uin */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2649 if (i >= 6) {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2650 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
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2651 gaim_notify_info(gc, NULL, "ICQ Page", dialog_msg);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2652 g_free(dialog_msg);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2653 }
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2654 } break;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2655
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2656 case 0x0e: { /* Someone has emailed you at your_uin@pager.icq.com */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2657 if (i >= 6) {
4308
8eefe9f67895 [gaim-migrate @ 4562]
Mark Doliner <markdoliner@pidgin.im>
parents: 4303
diff changeset
2658 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
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2659 gaim_notify_info(gc, NULL, "ICQ Email", dialog_msg);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2660 g_free(dialog_msg);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2661 }
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2662 } break;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2663
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2664 case 0x12: {
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2665 /* Ack for authorizing/denying someone. Or possibly an ack for sending any system notice */
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2666 /* Someone added you to their contact list? */
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2667 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2668
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2669 case 0x13: { /* Someone has sent you some ICQ contacts */
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2670 int i, num;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2671 gchar **text;
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2672 text = g_strsplit(args->msg, "\376", 0);
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2673 if (text) {
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2674 num = 0;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2675 for (i=0; i<strlen(text[0]); i++)
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2676 num = num*10 + text[0][i]-48;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2677 for (i=0; i<num; i++) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2678 struct name_data *data = g_new(struct name_data, 1);
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
2679 gchar *message = g_strdup_printf(_("ICQ user %u has sent you a contact: %s (%s)"), args->uin, text[i*2+2], text[i*2+1]);
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2680 data->gc = gc;
4790
765a98790ede [gaim-migrate @ 5110]
Mark Doliner <markdoliner@pidgin.im>
parents: 4785
diff changeset
2681 data->name = g_strdup(text[i*2+1]);
765a98790ede [gaim-migrate @ 5110]
Mark Doliner <markdoliner@pidgin.im>
parents: 4785
diff changeset
2682 data->nick = g_strdup(text[i*2+2]);
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2683
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2684 gaim_request_action(gc, NULL, message,
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2685 _("Do you want to add this contact "
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2686 "to your Buddy List?"),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2687 0, data, 2,
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
2688 _("Add"), G_CALLBACK(gaim_icq_contactadd),
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
2689 _("Decline"), G_CALLBACK(oscar_free_name_data));
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2690 g_free(message);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2691 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2692 g_strfreev(text);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2693 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2694 } break;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2695
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2696 case 0x1a: { /* Someone has sent you a greeting card or requested contacts? */
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2697 /* This is boring and silly. */
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2698 } break;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2699
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2700 default: {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2701 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2702 "Received a channel 4 message of unknown type "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2703 "(type 0x%02hhx).\n", args->type);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2704 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2705 }
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2706
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2707 g_strfreev(msg1);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2708 g_strfreev(msg2);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2709
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2710 return 1;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2711 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2712
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2713 static int gaim_parse_incoming_im(aim_session_t *sess, aim_frame_t *fr, ...) {
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2714 fu16_t channel;
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2715 int ret = 0;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2716 aim_userinfo_t *userinfo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2717 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2718
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2719 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2720 channel = (fu16_t)va_arg(ap, unsigned int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2721 userinfo = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2722
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2723 switch (channel) {
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2724 case 1: { /* standard message */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2725 struct aim_incomingim_ch1_args *args;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2726 args = va_arg(ap, struct aim_incomingim_ch1_args *);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2727 ret = incomingim_chan1(sess, fr->conn, userinfo, args);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2728 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2729
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2730 case 2: { /* rendevous */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2731 struct aim_incomingim_ch2_args *args;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2732 args = va_arg(ap, struct aim_incomingim_ch2_args *);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2733 ret = incomingim_chan2(sess, fr->conn, userinfo, args);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2734 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2735
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2736 case 4: { /* ICQ */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2737 struct aim_incomingim_ch4_args *args;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2738 args = va_arg(ap, struct aim_incomingim_ch4_args *);
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2739 ret = incomingim_chan4(sess, fr->conn, userinfo, args, 0);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2740 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2741
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2742 default: {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2743 gaim_debug(GAIM_DEBUG_WARNING, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2744 "ICBM received on unsupported channel (channel "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2745 "0x%04hx).", channel);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2746 } break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2747 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2748
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2749 va_end(ap);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2750
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2751 return ret;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2752 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2753
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2754 static int gaim_parse_misses(aim_session_t *sess, aim_frame_t *fr, ...) {
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2755 char *buf;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2756 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2757 fu16_t chan, nummissed, reason;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2758 aim_userinfo_t *userinfo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2759
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2760 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2761 chan = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2762 userinfo = va_arg(ap, aim_userinfo_t *);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2763 nummissed = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2764 reason = (fu16_t)va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2765 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2766
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2767 switch(reason) {
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2768 case 0: /* Invalid (0) */
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2769 buf = g_strdup_printf(
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2770 ngettext(
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2771 "You missed %hu message from %s because it was invalid.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2772 "You missed %hu messages from %s because they were invalid.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2773 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2774 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2775 userinfo->sn);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2776 break;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2777 case 1: /* Message too large */
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2778 buf = g_strdup_printf(
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2779 ngettext(
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2780 "You missed %hu message from %s because it was too large.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2781 "You missed %hu messages from %s because they were too large.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2782 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2783 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2784 userinfo->sn);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2785 break;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2786 case 2: /* Rate exceeded */
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2787 buf = g_strdup_printf(
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2788 ngettext(
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2789 "You missed %hu message from %s because the rate limit has been exceeded.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2790 "You missed %hu messages from %s because the rate limit has been exceeded.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2791 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2792 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2793 userinfo->sn);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2794 break;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2795 case 3: /* Evil Sender */
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2796 buf = g_strdup_printf(
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2797 ngettext(
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2798 "You missed %hu message from %s because he/she was too evil.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2799 "You missed %hu messages from %s because he/she was too evil.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2800 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2801 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2802 userinfo->sn);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2803 break;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2804 case 4: /* Evil Receiver */
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2805 buf = g_strdup_printf(
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2806 ngettext(
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2807 "You missed %hu message from %s because you are too evil.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2808 "You missed %hu messages from %s because you are too evil.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2809 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2810 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2811 userinfo->sn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2812 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2813 default:
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2814 buf = g_strdup_printf(
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2815 ngettext(
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2816 "You missed %hu message from %s for an unknown reason.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2817 "You missed %hu messages from %s for an unknown reason.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2818 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2819 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2820 userinfo->sn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2821 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2822 }
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2823 gaim_notify_error(sess->aux_data, NULL, buf, NULL);
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2824 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2825
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2826 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2827 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2828
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2829 static char *gaim_icq_status(int state) {
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2830 /* Make a cute little string that shows the status of the dude or dudet */
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2831 if (state & AIM_ICQ_STATE_CHAT)
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
2832 return g_strdup_printf(_("Free For Chat"));
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2833 else if (state & AIM_ICQ_STATE_DND)
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
2834 return g_strdup_printf(_("Do Not Disturb"));
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2835 else if (state & AIM_ICQ_STATE_OUT)
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
2836 return g_strdup_printf(_("Not Available"));
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2837 else if (state & AIM_ICQ_STATE_BUSY)
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
2838 return g_strdup_printf(_("Occupied"));
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2839 else if (state & AIM_ICQ_STATE_AWAY)
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
2840 return g_strdup_printf(_("Away"));
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2841 else if (state & AIM_ICQ_STATE_WEBAWARE)
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
2842 return g_strdup_printf(_("Web Aware"));
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2843 else if (state & AIM_ICQ_STATE_INVISIBLE)
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
2844 return g_strdup_printf(_("Invisible"));
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2845 else
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
2846 return g_strdup_printf(_("Online"));
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2847 }
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2848
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2849 static int gaim_parse_clientauto_ch2(aim_session_t *sess, const char *who, fu16_t reason, const char *cookie) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2850 GaimConnection *gc = sess->aux_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2851 struct oscar_data *od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2852
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2853 /* BBB */
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2854 switch (reason) {
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2855 case 3: { /* Decline sendfile. */
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
2856 GaimXfer *xfer;
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2857 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2858 "AAA - Other user declined file transfer\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2859 if ((xfer = oscar_find_xfer_by_cookie(od->file_transfers, cookie)))
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
2860 gaim_xfer_cancel_remote(xfer);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2861 } break;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2862
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2863 default: {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2864 gaim_debug(GAIM_DEBUG_WARNING, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2865 "Received an unknown rendezvous client auto-response "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2866 "from %s. Type 0x%04hx\n", who, reason);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2867 }
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2868
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2869 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2870
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2871 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2872 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2873
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2874 static int gaim_parse_clientauto_ch4(aim_session_t *sess, char *who, fu16_t reason, fu32_t state, char *msg) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2875 GaimConnection *gc = sess->aux_data;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2876
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2877 switch(reason) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2878 case 0x0003: { /* Reply from an ICQ status message request */
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2879 char *status_msg = gaim_icq_status(state);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2880 char *dialog_msg, **splitmsg;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2881 struct oscar_data *od = gc->proto_data;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2882 GSList *l = od->evilhack;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2883 gboolean evilhack = FALSE;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2884
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2885 /* Split at (carriage return/newline)'s, then rejoin later with BRs between. */
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2886 splitmsg = g_strsplit(msg, "\r\n", 0);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2887
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2888 /* If who is in od->evilhack, then we're just getting the away message, otherwise this
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2889 * will just get appended to the info box (which is already showing). */
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2890 while (l) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2891 char *x = l->data;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2892 if (!strcmp(x, normalize(who))) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2893 evilhack = TRUE;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2894 g_free(x);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2895 od->evilhack = g_slist_remove(od->evilhack, x);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2896 break;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2897 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2898 l = l->next;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2899 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2900
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2901 if (evilhack)
4344
01db0d9079ea [gaim-migrate @ 4609]
Mark Doliner <markdoliner@pidgin.im>
parents: 4342
diff changeset
2902 dialog_msg = g_strdup_printf(_("<B>UIN:</B> %s<BR><B>Status:</B> %s<HR>%s"), who, status_msg, g_strjoinv("<BR>", splitmsg));
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2903 else
4344
01db0d9079ea [gaim-migrate @ 4609]
Mark Doliner <markdoliner@pidgin.im>
parents: 4342
diff changeset
2904 dialog_msg = g_strdup_printf(_("<B>Status:</B> %s<HR>%s"), status_msg, g_strjoinv("<BR>", splitmsg));
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2905 g_show_info_text(gc, who, 2, dialog_msg, NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2906
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2907 g_free(status_msg);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2908 g_free(dialog_msg);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2909 g_strfreev(splitmsg);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2910 } break;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2911
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2912 default: {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2913 gaim_debug(GAIM_DEBUG_WARNING, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2914 "Received an unknown client auto-response from %s. "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2915 "Type 0x%04hx\n", who, reason);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2916 } break;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2917 } /* end of switch */
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2918
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2919 return 0;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2920 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2921
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2922 static int gaim_parse_clientauto(aim_session_t *sess, aim_frame_t *fr, ...) {
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2923 va_list ap;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2924 fu16_t chan, reason;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2925 char *who;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2926
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2927 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2928 chan = (fu16_t)va_arg(ap, unsigned int);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2929 who = va_arg(ap, char *);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2930 reason = (fu16_t)va_arg(ap, unsigned int);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2931
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
2932 if (chan == 0x0002) { /* File transfer declined */
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2933 char *cookie = va_arg(ap, char *);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2934 return gaim_parse_clientauto_ch2(sess, who, reason, cookie);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
2935 } else if (chan == 0x0004) { /* ICQ message */
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2936 fu32_t state = 0;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2937 char *msg = NULL;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2938 if (reason == 0x0003) {
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2939 state = va_arg(ap, fu32_t);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2940 msg = va_arg(ap, char *);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2941 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2942 return gaim_parse_clientauto_ch4(sess, who, reason, state, msg);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2943 }
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
2944
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2945 va_end(ap);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2946
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2947 return 1;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2948 }
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2949
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2950 static int gaim_parse_genericerr(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2951 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2952 fu16_t reason;
2865
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
2953 char *m;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2954
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2955 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
2956 reason = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2957 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2958
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2959 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2960 "snac threw error (reason 0x%04hx: %s)\n", reason,
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2961 (reason < msgerrreasonlen) ? msgerrreason[reason] : "unknown");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2962
2865
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
2963 m = g_strdup_printf(_("SNAC threw error: %s\n"),
5411
b3683d2acbb4 [gaim-migrate @ 5787]
Mark Doliner <markdoliner@pidgin.im>
parents: 5402
diff changeset
2964 reason < msgerrreasonlen ? _(msgerrreason[reason]) : _("Unknown error"));
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2965 gaim_notify_error(sess->aux_data, NULL, m, NULL);
2865
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
2966 g_free(m);
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
2967
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2968 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2969 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2970
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2971 static int gaim_parse_msgerr(aim_session_t *sess, aim_frame_t *fr, ...) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2972 #if 0
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2973 GaimConnection *gc = sess->aux_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2974 struct oscar_data *od = gc->proto_data;
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
2975 GaimXfer *xfer;
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
2976 #endif
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2977 va_list ap;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2978 fu16_t reason;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2979 char *data, *buf;
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
2980
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2981 va_start(ap, fr);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2982 reason = (fu16_t)va_arg(ap, unsigned int);
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2983 data = va_arg(ap, char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2984 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2985
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2986 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2987 "Message error with data %s and reason %hu\n", data, reason);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2988
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2989 /* BBB */
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
2990 #if 0
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2991 /* If this was a file transfer request, data is a cookie */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2992 if ((xfer = oscar_find_xfer_by_cookie(od->file_transfers, data))) {
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
2993 gaim_xfer_cancel_remote(xfer);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2994 return 1;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2995 }
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
2996 #endif
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2997
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2998 /* Data is assumed to be the destination sn */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2999 buf = g_strdup_printf(_("Your message to %s did not get sent:"), data);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3000 gaim_notify_error(sess->aux_data, NULL, buf,
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3001 (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("No reason given."));
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3002 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3003
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3004 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3005 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3006
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3007 static int gaim_parse_mtn(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3008 GaimConnection *gc = sess->aux_data;
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3009 va_list ap;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3010 fu16_t type1, type2;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3011 char *sn;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3012
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3013 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3014 type1 = (fu16_t) va_arg(ap, unsigned int);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3015 sn = va_arg(ap, char *);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3016 type2 = (fu16_t) va_arg(ap, unsigned int);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3017 va_end(ap);
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3018
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3019 switch (type2) {
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3020 case 0x0000: { /* Text has been cleared */
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3021 serv_got_typing_stopped(gc, sn);
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3022 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3023
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3024 case 0x0001: { /* Paused typing */
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
3025 serv_got_typing(gc, sn, 0, GAIM_TYPED);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3026 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3027
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3028 case 0x0002: { /* Typing */
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
3029 serv_got_typing(gc, sn, 0, GAIM_TYPING);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3030 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3031
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3032 default: {
5435
990c340ecb6d [gaim-migrate @ 5817]
Mark Doliner <markdoliner@pidgin.im>
parents: 5421
diff changeset
3033 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
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3034 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3035 }
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3036
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3037 return 1;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3038 }
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3039
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3040 static int gaim_parse_locerr(aim_session_t *sess, aim_frame_t *fr, ...) {
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3041 char *buf;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3042 va_list ap;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3043 fu16_t reason;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3044 char *destn;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3045
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3046 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3047 reason = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3048 destn = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3049 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3050
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3051 buf = g_strdup_printf(_("User information for %s unavailable:"), destn);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3052 gaim_notify_error(sess->aux_data, NULL, buf,
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3053 (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("No reason given."));
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3054 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3055
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3056 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3057 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3058
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3059 static char *images(int flags) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3060 static char buf[1024];
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
3061 g_snprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s",
2679
209a5948cb6e [gaim-migrate @ 2692]
Adam Fritzler <mid@auk.cx>
parents: 2675
diff changeset
3062 (flags & AIM_FLAG_ACTIVEBUDDY) ? "<IMG SRC=\"ab_icon.gif\">" : "",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3063 (flags & AIM_FLAG_UNCONFIRMED) ? "<IMG SRC=\"dt_icon.gif\">" : "",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3064 (flags & AIM_FLAG_AOL) ? "<IMG SRC=\"aol_icon.gif\">" : "",
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
3065 (flags & AIM_FLAG_ICQ) ? "<IMG SRC=\"icq_icon.gif\">" : "",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3066 (flags & AIM_FLAG_ADMINISTRATOR) ? "<IMG SRC=\"admin_icon.gif\">" : "",
3079
e55c9a9cc4fc [gaim-migrate @ 3093]
Mark Doliner <markdoliner@pidgin.im>
parents: 3074
diff changeset
3067 (flags & AIM_FLAG_FREE) ? "<IMG SRC=\"free_icon.gif\">" : "",
e55c9a9cc4fc [gaim-migrate @ 3093]
Mark Doliner <markdoliner@pidgin.im>
parents: 3074
diff changeset
3068 (flags & AIM_FLAG_WIRELESS) ? "<IMG SRC=\"wireless_icon.gif\">" : "");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3069 return buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3070 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3071
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
3072
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3073 static char *caps_string(guint caps)
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3074 {
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3075 static char buf[512], *tmp;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3076 int count = 0, i = 0;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3077 guint bit = 1;
4742
dc3735abd7d3 [gaim-migrate @ 5057]
Mark Doliner <markdoliner@pidgin.im>
parents: 4741
diff changeset
3078
dc3735abd7d3 [gaim-migrate @ 5057]
Mark Doliner <markdoliner@pidgin.im>
parents: 4741
diff changeset
3079 if (!caps) {
4744
c3a5a15c01f7 [gaim-migrate @ 5059]
Sean Egan <seanegan@pidgin.im>
parents: 4743
diff changeset
3080 return NULL;
6318
494984c2ea4d [gaim-migrate @ 6817]
Mark Doliner <markdoliner@pidgin.im>
parents: 6310
diff changeset
3081 } else while (bit <= AIM_CAPS_LAST) {
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3082 if (bit & caps) {
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3083 switch (bit) {
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3084 case 0x1:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3085 tmp = _("Buddy Icon");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3086 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3087 case 0x2:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3088 tmp = _("Voice");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3089 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3090 case 0x4:
4898
285e9ff6eeb8 [gaim-migrate @ 5230]
Mark Doliner <markdoliner@pidgin.im>
parents: 4889
diff changeset
3091 tmp = _("Direct IM");
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3092 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3093 case 0x8:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3094 tmp = _("Chat");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3095 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3096 case 0x10:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3097 tmp = _("Get File");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3098 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3099 case 0x20:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3100 tmp = _("Send File");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3101 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3102 case 0x40:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3103 case 0x200:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3104 tmp = _("Games");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3105 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3106 case 0x80:
4898
285e9ff6eeb8 [gaim-migrate @ 5230]
Mark Doliner <markdoliner@pidgin.im>
parents: 4889
diff changeset
3107 tmp = _("Add-Ins");
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3108 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3109 case 0x100:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3110 tmp = _("Send Buddy List");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3111 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3112 case 0x400:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3113 tmp = _("EveryBuddy Bug");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3114 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3115 case 0x800:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3116 tmp = _("AP User");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3117 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3118 case 0x1000:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3119 tmp = _("ICQ RTF");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3120 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3121 case 0x2000:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3122 tmp = _("Nihilist");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3123 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3124 case 0x4000:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3125 tmp = _("ICQ Server Relay");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3126 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3127 case 0x8000:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3128 tmp = _("ICQ Unknown");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3129 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3130 case 0x10000:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3131 tmp = _("Trillian Encryption");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3132 break;
4742
dc3735abd7d3 [gaim-migrate @ 5057]
Mark Doliner <markdoliner@pidgin.im>
parents: 4741
diff changeset
3133 case 0x20000:
dc3735abd7d3 [gaim-migrate @ 5057]
Mark Doliner <markdoliner@pidgin.im>
parents: 4741
diff changeset
3134 tmp = _("ICQ UTF8");
dc3735abd7d3 [gaim-migrate @ 5057]
Mark Doliner <markdoliner@pidgin.im>
parents: 4741
diff changeset
3135 break;
6318
494984c2ea4d [gaim-migrate @ 6817]
Mark Doliner <markdoliner@pidgin.im>
parents: 6310
diff changeset
3136 case AIM_CAPS_HIPTOP:
494984c2ea4d [gaim-migrate @ 6817]
Mark Doliner <markdoliner@pidgin.im>
parents: 6310
diff changeset
3137 tmp = _("Hiptop");
494984c2ea4d [gaim-migrate @ 6817]
Mark Doliner <markdoliner@pidgin.im>
parents: 6310
diff changeset
3138 break;
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3139 default:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3140 tmp = NULL;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3141 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3142 }
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3143 if (tmp)
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3144 i += g_snprintf(buf + i, sizeof(buf) - i, "%s%s", (count ? ", " : ""),
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3145 tmp);
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3146 count++;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3147 }
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3148 bit <<= 1;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3149 }
4744
c3a5a15c01f7 [gaim-migrate @ 5059]
Sean Egan <seanegan@pidgin.im>
parents: 4743
diff changeset
3150 return buf;
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3151 }
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3152
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3153 static int gaim_parse_user_info(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3154 GaimConnection *gc = sess->aux_data;
4791
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3155 struct oscar_data *od = gc->proto_data;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3156 gchar *header;
4791
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3157 GSList *l = od->evilhack;
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3158 gboolean evilhack = FALSE;
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3159 gchar *membersince = NULL, *onlinesince = NULL, *idle = NULL;
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3160 va_list ap;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3161 aim_userinfo_t *info;
4791
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3162 fu16_t infotype;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3163 char *text_enc = NULL, *text = NULL, *utf8 = NULL;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3164 int text_len;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3165 const char *username = gaim_account_get_username(gaim_connection_get_account(gc));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3166
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3167 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3168 info = va_arg(ap, aim_userinfo_t *);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3169 infotype = (fu16_t) va_arg(ap, unsigned int);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3170 text_enc = va_arg(ap, char *);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3171 text = va_arg(ap, char *);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3172 text_len = va_arg(ap, int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3173 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3174
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3175 if (text_len > 0) {
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
3176 if (!(utf8 = oscar_encoding_to_utf8(text_enc, text, text_len))) {
4791
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3177 utf8 = g_strdup(_("<i>Unable to display information because it was sent in an unknown encoding.</i>"));
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3178 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3179 "Encountered an unknown encoding while parsing userinfo\n");
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3180 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3181 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3182
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3183 if (info->present & AIM_USERINFO_PRESENT_ONLINESINCE) {
4834
80bc171a5236 [gaim-migrate @ 5159]
Luke Schierer <lschiere@pidgin.im>
parents: 4832
diff changeset
3184 onlinesince = g_strdup_printf(_("Online Since : <b>%s</b><br>\n"),
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
3185 asctime(localtime((time_t *)&info->onlinesince)));
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3186 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3187
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3188 if (info->present & AIM_USERINFO_PRESENT_MEMBERSINCE) {
4834
80bc171a5236 [gaim-migrate @ 5159]
Luke Schierer <lschiere@pidgin.im>
parents: 4832
diff changeset
3189 membersince = g_strdup_printf(_("Member Since : <b>%s</b><br>\n"),
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
3190 asctime(localtime((time_t *)&info->membersince)));
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3191 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3192
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3193 if (info->present & AIM_USERINFO_PRESENT_IDLE) {
4426
27e671cf2854 [gaim-migrate @ 4701]
Mark Doliner <markdoliner@pidgin.im>
parents: 4423
diff changeset
3194 gchar *itime = sec_to_text(info->idletime*60);
4834
80bc171a5236 [gaim-migrate @ 5159]
Luke Schierer <lschiere@pidgin.im>
parents: 4832
diff changeset
3195 idle = g_strdup_printf(_("Idle : <b>%s</b>"), itime);
4426
27e671cf2854 [gaim-migrate @ 4701]
Mark Doliner <markdoliner@pidgin.im>
parents: 4423
diff changeset
3196 g_free(itime);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3197 } else
4834
80bc171a5236 [gaim-migrate @ 5159]
Luke Schierer <lschiere@pidgin.im>
parents: 4832
diff changeset
3198 idle = g_strdup(_("Idle: <b>Active</b>"));
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3199
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3200 header = g_strdup_printf(_("Username : <b>%s</b> %s <br>\n"
4791
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3201 "Warning Level : <b>%d %%</b><br>\n"
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3202 "%s"
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3203 "%s"
4344
01db0d9079ea [gaim-migrate @ 4609]
Mark Doliner <markdoliner@pidgin.im>
parents: 4342
diff changeset
3204 "%s\n"
4791
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3205 "<hr>\n"),
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3206 info->sn, images(info->flags),
5630
a05d97d87690 [gaim-migrate @ 6037]
Mark Doliner <markdoliner@pidgin.im>
parents: 5628
diff changeset
3207 (int)((info->warnlevel/10.0) + 0.5),
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3208 onlinesince ? onlinesince : "",
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3209 membersince ? membersince : "",
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3210 idle ? idle : "");
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3211
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3212 g_free(onlinesince);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3213 g_free(membersince);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3214 g_free(idle);
2773
3f711c709792 [gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2768
diff changeset
3215
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3216 while (l) {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3217 char *x = l->data;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3218 if (!strcmp(x, normalize(info->sn))) {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3219 evilhack = TRUE;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3220 g_free(x);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3221 od->evilhack = g_slist_remove(od->evilhack, x);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3222 break;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3223 }
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3224 l = l->next;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3225 }
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3226
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3227 if (infotype == AIM_GETINFO_AWAYMESSAGE) {
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3228 if (evilhack) {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3229 g_show_info_text(gc, info->sn, 2,
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3230 header,
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3231 (utf8 && *utf8) ? away_subs(utf8, username) :
4207
24e4a2d77476 [gaim-migrate @ 4443]
Sean Egan <seanegan@pidgin.im>
parents: 4201
diff changeset
3232 _("<i>User has no away message</i>"), NULL);
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3233 } else {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3234 g_show_info_text(gc, info->sn, 0,
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3235 header,
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3236 (utf8 && *utf8) ? away_subs(utf8, username) : NULL,
4791
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3237 (utf8 && *utf8) ? "<hr>" : NULL,
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3238 NULL);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3239 }
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3240 } else if (infotype == AIM_GETINFO_CAPABILITIES) {
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3241 g_show_info_text(gc, info->sn, 2,
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3242 header,
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3243 "<i>", _("Client Capabilities: "),
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3244 caps_string(info->capabilities),
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3245 "</i>",
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3246 NULL);
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3247 } else {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3248 g_show_info_text(gc, info->sn, 1,
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3249 (utf8 && *utf8) ? away_subs(utf8, username) : _("<i>No Information Provided</i>"),
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3250 NULL);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3251 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3252
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3253 g_free(header);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3254 g_free(utf8);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3255
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3256 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3257 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3258
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3259 static int gaim_parse_motd(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3260 char *msg;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3261 fu16_t id;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3262 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3263
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3264 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3265 id = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3266 msg = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3267 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3268
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3269 gaim_debug(GAIM_DEBUG_MISC, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3270 "MOTD: %s (%hu)\n", msg ? msg : "Unknown", id);
2092
f56061012e3c [gaim-migrate @ 2102]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
3271 if (id < 4)
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3272 gaim_notify_warning(sess->aux_data, NULL,
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3273 _("Your AIM connection may be lost."), NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3274
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3275 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3276 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3277
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3278 static int gaim_chatnav_info(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3279 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3280 fu16_t type;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3281 GaimConnection *gc = sess->aux_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3282 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3283
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3284 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3285 type = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3286
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3287 switch(type) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3288 case 0x0002: {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3289 fu8_t maxrooms;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3290 struct aim_chat_exchangeinfo *exchanges;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3291 int exchangecount, i;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3292
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3293 maxrooms = (fu8_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3294 exchangecount = va_arg(ap, int);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3295 exchanges = va_arg(ap, struct aim_chat_exchangeinfo *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3296
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3297 gaim_debug(GAIM_DEBUG_MISC, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3298 "chat info: Chat Rights:\n");
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3299 gaim_debug(GAIM_DEBUG_MISC, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3300 "chat info: \tMax Concurrent Rooms: %hhd\n", maxrooms);
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3301 gaim_debug(GAIM_DEBUG_MISC, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3302 "chat info: \tExchange List: (%d total)\n", exchangecount);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3303 for (i = 0; i < exchangecount; i++)
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3304 gaim_debug(GAIM_DEBUG_MISC, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3305 "chat info: \t\t%hu %s\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3306 exchanges[i].number, exchanges[i].name ? exchanges[i].name : "");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3307 while (od->create_rooms) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3308 struct create_room *cr = od->create_rooms->data;
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3309 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3310 "creating room %s\n", cr->name);
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
3311 aim_chatnav_createroom(sess, fr->conn, cr->name, cr->exchange);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
3312 g_free(cr->name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3313 od->create_rooms = g_slist_remove(od->create_rooms, cr);
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
3314 g_free(cr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3315 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3316 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3317 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3318 case 0x0008: {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3319 char *fqcn, *name, *ck;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3320 fu16_t instance, flags, maxmsglen, maxoccupancy, unknown, exchange;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3321 fu8_t createperms;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3322 fu32_t createtime;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3323
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3324 fqcn = va_arg(ap, char *);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3325 instance = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3326 exchange = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3327 flags = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3328 createtime = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3329 maxmsglen = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3330 maxoccupancy = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3331 createperms = (fu8_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3332 unknown = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3333 name = va_arg(ap, char *);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3334 ck = va_arg(ap, char *);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3335
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3336 gaim_debug(GAIM_DEBUG_MISC, "oscar",
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
3337 "created room: %s %hu %hu %hu %u %hu %hu %hhu %hu %s %s\n",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3338 fqcn,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3339 exchange, instance, flags,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3340 createtime,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3341 maxmsglen, maxoccupancy, createperms, unknown,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3342 name, ck);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3343 aim_chat_join(od->sess, od->conn, exchange, ck, instance);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3344 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3345 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3346 default:
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3347 gaim_debug(GAIM_DEBUG_WARNING, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3348 "chatnav info: unknown type (%04hx)\n", type);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3349 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3350 }
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3351
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3352 va_end(ap);
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3353
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3354 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3355 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3356
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3357 static int gaim_chat_join(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3358 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3359 int count, i;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3360 aim_userinfo_t *info;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3361 GaimConnection *g = sess->aux_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3362
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3363 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3364
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3365 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3366 count = va_arg(ap, int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3367 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3368 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3369
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3370 c = find_oscar_chat_by_conn(g, fr->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3371 if (!c)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3372 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3373
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3374 for (i = 0; i < count; i++)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
3375 gaim_chat_add_user(GAIM_CHAT(c->cnv), info[i].sn, NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3376
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3377 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3378 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3379
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3380 static int gaim_chat_leave(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3381 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3382 int count, i;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3383 aim_userinfo_t *info;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3384 GaimConnection *g = sess->aux_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3385
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3386 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3387
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3388 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3389 count = va_arg(ap, int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3390 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3391 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3392
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3393 c = find_oscar_chat_by_conn(g, fr->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3394 if (!c)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3395 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3396
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3397 for (i = 0; i < count; i++)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
3398 gaim_chat_remove_user(GAIM_CHAT(c->cnv), info[i].sn, NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3399
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3400 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3401 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3402
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3403 static int gaim_chat_info_update(aim_session_t *sess, aim_frame_t *fr, ...) {
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3404 va_list ap;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3405 aim_userinfo_t *userinfo;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3406 struct aim_chat_roominfo *roominfo;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3407 char *roomname;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3408 int usercount;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3409 char *roomdesc;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3410 fu16_t unknown_c9, unknown_d2, unknown_d5, maxmsglen, maxvisiblemsglen;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3411 fu32_t creationtime;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3412 GaimConnection *gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3413 struct chat_connection *ccon = find_oscar_chat_by_conn(gc, fr->conn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3414
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3415 va_start(ap, fr);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3416 roominfo = va_arg(ap, struct aim_chat_roominfo *);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3417 roomname = va_arg(ap, char *);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3418 usercount= va_arg(ap, int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3419 userinfo = va_arg(ap, aim_userinfo_t *);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3420 roomdesc = va_arg(ap, char *);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3421 unknown_c9 = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3422 creationtime = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3423 maxmsglen = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3424 unknown_d2 = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3425 unknown_d5 = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3426 maxvisiblemsglen = (fu16_t)va_arg(ap, unsigned int);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3427 va_end(ap);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3428
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3429 gaim_debug(GAIM_DEBUG_MISC, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3430 "inside chat_info_update (maxmsglen = %hu, maxvislen = %hu)\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3431 maxmsglen, maxvisiblemsglen);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3432
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3433 ccon->maxlen = maxmsglen;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3434 ccon->maxvis = maxvisiblemsglen;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3435
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3436 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3437 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3438
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3439 static int gaim_chat_incoming_msg(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3440 GaimConnection *gc = sess->aux_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3441 va_list ap;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3442 aim_userinfo_t *info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3443 char *msg;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3444 struct chat_connection *ccon = find_oscar_chat_by_conn(gc, fr->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3445
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3446 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3447 info = va_arg(ap, aim_userinfo_t *);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3448 msg = va_arg(ap, char *);
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3449 va_end(ap);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3450
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3451 serv_got_chat_in(gc, ccon->id, info->sn, 0, msg, time((time_t)NULL));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3452
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3453 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3454 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3455
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3456 static int gaim_email_parseupdate(aim_session_t *sess, aim_frame_t *fr, ...) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3457 va_list ap;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3458 GaimConnection *gc = sess->aux_data;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3459 struct aim_emailinfo *emailinfo;
3725
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
3460 int havenewmail;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3461
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3462 va_start(ap, fr);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3463 emailinfo = va_arg(ap, struct aim_emailinfo *);
3725
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
3464 havenewmail = va_arg(ap, int);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3465 va_end(ap);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3466
5628
1ff32ba9ee18 [gaim-migrate @ 6035]
Ryan McCabe
parents: 5591
diff changeset
3467 if (emailinfo && gaim_account_get_check_mail(gc->account)) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3468 gchar *to = g_strdup_printf("%s@%s", gaim_account_get_username(gaim_connection_get_account(gc)), emailinfo->domain);
5542
0f02c413c862 [gaim-migrate @ 5942]
Mark Doliner <markdoliner@pidgin.im>
parents: 5540
diff changeset
3469 if (emailinfo->unread && havenewmail)
0f02c413c862 [gaim-migrate @ 5942]
Mark Doliner <markdoliner@pidgin.im>
parents: 5540
diff changeset
3470 gaim_notify_emails(gc, emailinfo->nummsgs, FALSE, NULL, NULL, (const char **)&to, (const char **)&emailinfo->url, NULL, NULL);
5537
812794b97b08 [gaim-migrate @ 5937]
Mark Doliner <markdoliner@pidgin.im>
parents: 5517
diff changeset
3471 g_free(to);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3472 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3473
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3474 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3475 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3476
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3477 static int gaim_icon_error(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3478 GaimConnection *gc = sess->aux_data;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3479 struct oscar_data *od = gc->proto_data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3480 char *sn;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3481
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3482 sn = od->requesticon->data;
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3483 gaim_debug(GAIM_DEBUG_MISC, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3484 "removing %s from hash table\n", sn);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3485 od->requesticon = g_slist_remove(od->requesticon, sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3486 free(sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3487
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3488 if (od->icontimer)
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3489 g_source_remove(od->icontimer);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3490 od->icontimer = g_timeout_add(500, gaim_icon_timerfunc, gc);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3491
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3492 return 1;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3493 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3494
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3495 static int gaim_icon_parseicon(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3496 GaimConnection *gc = sess->aux_data;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3497 struct oscar_data *od = gc->proto_data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3498 GSList *cur;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3499 va_list ap;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3500 char *sn;
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
3501 fu8_t *iconcsum, *icon;
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
3502 fu16_t iconcsumlen, iconlen;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3503
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3504 va_start(ap, fr);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3505 sn = va_arg(ap, char *);
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
3506 iconcsum = va_arg(ap, fu8_t *);
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
3507 iconcsumlen = va_arg(ap, int);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3508 icon = va_arg(ap, fu8_t *);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3509 iconlen = va_arg(ap, int);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3510 va_end(ap);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3511
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
3512 if (iconlen > 0) {
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
3513 char *b16;
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
3514 struct buddy *b = gaim_find_buddy(gc->account, sn);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3515 set_icon_data(gc, sn, icon, iconlen);
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
3516 b16 = tobase16(iconcsum, iconcsumlen);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
3517 if (b16) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
3518 gaim_buddy_set_setting(b, "icon_checksum", b16);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
3519 gaim_blist_save();
5125
a0b0afd30c5e [gaim-migrate @ 5488]
Nathan Walp <nwalp@pidgin.im>
parents: 5068
diff changeset
3520 free(b16);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
3521 }
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
3522 }
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3523
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3524 cur = od->requesticon;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3525 while (cur) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3526 char *cursn = cur->data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3527 if (!aim_sncmp(cursn, sn)) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3528 od->requesticon = g_slist_remove(od->requesticon, cursn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3529 free(cursn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3530 cur = od->requesticon;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3531 } else
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3532 cur = cur->next;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3533 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3534
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3535 if (od->icontimer)
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3536 g_source_remove(od->icontimer);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3537 od->icontimer = g_timeout_add(250, gaim_icon_timerfunc, gc);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3538
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3539 return 1;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3540 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3541
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3542 static gboolean gaim_icon_timerfunc(gpointer data) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3543 GaimConnection *gc = data;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3544 struct oscar_data *od = gc->proto_data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3545 struct buddyinfo *bi;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3546 aim_conn_t *conn;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3547
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3548 conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_ICON);
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
3549 if (!conn) {
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
3550 if (!od->iconconnecting) {
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
3551 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_ICON);
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
3552 od->iconconnecting = TRUE;
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
3553 }
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3554 return FALSE;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3555 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3556
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
3557 if (od->set_icon) {
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
3558 struct stat st;
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
3559 const char *iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc));
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
3560 if (iconfile == NULL) {
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
3561 /* Set an empty icon, or something */
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
3562 } else if (!stat(iconfile, &st)) {
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
3563 char *buf = g_malloc(st.st_size);
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
3564 FILE *file = fopen(iconfile, "rb");
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
3565 if (file) {
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
3566 fread(buf, 1, st.st_size, file);
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
3567 fclose(file);
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
3568 gaim_debug(GAIM_DEBUG_INFO, "oscar",
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
3569 "Uploading icon to icon server\n");
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
3570 aim_icon_upload(od->sess, buf, st.st_size);
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
3571 } else
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
3572 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
3573 "Can't open buddy icon file!\n");
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
3574 g_free(buf);
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
3575 } else {
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
3576 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
3577 "Can't stat buddy icon file!\n");
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
3578 }
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
3579 od->set_icon = FALSE;
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
3580 }
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
3581
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
3582 if (!od->requesticon) {
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
3583 gaim_debug(GAIM_DEBUG_MISC, "oscar",
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
3584 "no more icons to request\n");
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
3585 return FALSE;
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
3586 }
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
3587
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3588 bi = g_hash_table_lookup(od->buddyinfo, (char *)od->requesticon->data);
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
3589 if (bi && (bi->iconcsumlen > 0)) {
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
3590 aim_icon_request(od->sess, od->requesticon->data, bi->iconcsum, bi->iconcsumlen);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3591 return FALSE;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3592 } else {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3593 char *sn = od->requesticon->data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3594 od->requesticon = g_slist_remove(od->requesticon, sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3595 free(sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3596 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3597
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3598 return TRUE;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3599 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3600
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3601 /*
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3602 * Recieved in response to an IM sent with the AIM_IMFLAGS_ACK option.
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3603 */
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3604 static int gaim_parse_msgack(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3605 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3606 fu16_t type;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3607 char *sn;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3608
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3609 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3610 type = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3611 sn = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3612 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3613
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3614 gaim_debug(GAIM_DEBUG_INFO, "oscar", "Sent message to %s.\n", sn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3615
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3616 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3617 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3618
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3619 static int gaim_parse_ratechange(aim_session_t *sess, aim_frame_t *fr, ...) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3620 static const char *codes[5] = {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3621 "invalid",
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3622 "change",
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3623 "warning",
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3624 "limit",
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3625 "limit cleared",
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3626 };
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3627 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3628 fu16_t code, rateclass;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3629 fu32_t windowsize, clear, alert, limit, disconnect, currentavg, maxavg;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3630
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3631 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3632 code = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3633 rateclass= (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3634 windowsize = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3635 clear = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3636 alert = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3637 limit = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3638 disconnect = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3639 currentavg = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3640 maxavg = va_arg(ap, fu32_t);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3641 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3642
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3643 gaim_debug(GAIM_DEBUG_MISC, "oscar",
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
3644 "rate %s (param ID 0x%04hx): curavg = %u, maxavg = %u, alert at %u, "
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
3645 "clear warning at %u, limit at %u, disconnect at %u (window size = %u)\n",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3646 (code < 5) ? codes[code] : codes[0],
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3647 rateclass,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3648 currentavg, maxavg,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3649 alert, clear,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3650 limit, disconnect,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3651 windowsize);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3652
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3653 /* XXX fix these values */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3654 if (code == AIM_RATE_CODE_CHANGE) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3655 if (currentavg >= clear)
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3656 aim_conn_setlatency(fr->conn, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3657 } else if (code == AIM_RATE_CODE_WARNING) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3658 aim_conn_setlatency(fr->conn, windowsize/4);
2909
2935ea93dfe7 [gaim-migrate @ 2922]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2906
diff changeset
3659 } else if (code == AIM_RATE_CODE_LIMIT) {
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3660 gaim_notify_error(sess->aux_data, NULL, _("Rate limiting error."),
6040
ab00305db747 [gaim-migrate @ 6490]
Mark Doliner <markdoliner@pidgin.im>
parents: 6039
diff changeset
3661 _("The last action you attempted could not be "
ab00305db747 [gaim-migrate @ 6490]
Mark Doliner <markdoliner@pidgin.im>
parents: 6039
diff changeset
3662 "performed because you are over the rate limit. "
ab00305db747 [gaim-migrate @ 6490]
Mark Doliner <markdoliner@pidgin.im>
parents: 6039
diff changeset
3663 "Please wait 10 seconds and try again."));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3664 aim_conn_setlatency(fr->conn, windowsize/2);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3665 } else if (code == AIM_RATE_CODE_CLEARLIMIT) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3666 aim_conn_setlatency(fr->conn, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3667 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3668
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3669 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3670 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3671
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3672 static int gaim_parse_evilnotify(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3673 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3674 fu16_t newevil;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3675 aim_userinfo_t *userinfo;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3676 GaimConnection *gc = sess->aux_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3677
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3678 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3679 newevil = (fu16_t) va_arg(ap, unsigned int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3680 userinfo = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3681 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3682
5628
1ff32ba9ee18 [gaim-migrate @ 6035]
Ryan McCabe
parents: 5591
diff changeset
3683 serv_got_eviled(gc, (userinfo && userinfo->sn[0]) ? userinfo->sn : NULL, (newevil/10.0) + 0.5);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3684
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3685 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3686 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3687
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3688 static int gaim_selfinfo(aim_session_t *sess, aim_frame_t *fr, ...) {
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3689 va_list ap;
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3690 aim_userinfo_t *info;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3691 GaimConnection *gc = sess->aux_data;
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3692
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3693 va_start(ap, fr);
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3694 info = va_arg(ap, aim_userinfo_t *);
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3695 va_end(ap);
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3696
5628
1ff32ba9ee18 [gaim-migrate @ 6035]
Ryan McCabe
parents: 5591
diff changeset
3697 gc->evil = (info->warnlevel/10.0) + 0.5;
4841
65cf779d4f49 [gaim-migrate @ 5166]
Mark Doliner <markdoliner@pidgin.im>
parents: 4838
diff changeset
3698
65cf779d4f49 [gaim-migrate @ 5166]
Mark Doliner <markdoliner@pidgin.im>
parents: 4838
diff changeset
3699 if (info->onlinesince)
65cf779d4f49 [gaim-migrate @ 5166]
Mark Doliner <markdoliner@pidgin.im>
parents: 4838
diff changeset
3700 gc->login_time_official = info->onlinesince;
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3701
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3702 return 1;
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3703 }
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3704
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3705 static int gaim_connerr(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3706 GaimConnection *gc = sess->aux_data;
4666
fd74a2faaf94 [gaim-migrate @ 4977]
Mark Doliner <markdoliner@pidgin.im>
parents: 4665
diff changeset
3707 struct oscar_data *od = gc->proto_data;
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3708 va_list ap;
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3709 fu16_t code;
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3710 char *msg;
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3711
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3712 va_start(ap, fr);
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3713 code = (fu16_t)va_arg(ap, int);
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3714 msg = va_arg(ap, char *);
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3715 va_end(ap);
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3716
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3717 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3718 "Disconnected. Code is 0x%04x and msg is %s\n", code, msg);
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3719 if ((fr) && (fr->conn) && (fr->conn->type == AIM_CONN_TYPE_BOS)) {
4651
7f6df9e4cb0f [gaim-migrate @ 4962]
Sean Egan <seanegan@pidgin.im>
parents: 4650
diff changeset
3720 if (code == 0x0001) {
6113
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6066
diff changeset
3721 gc->wants_to_die = TRUE;
5579
9a3dbd24e80a [gaim-migrate @ 5983]
Sean Egan <seanegan@pidgin.im>
parents: 5577
diff changeset
3722 gaim_connection_error(gc, _("You have been disconnected because you have signed on with this screen name at another location."));
4651
7f6df9e4cb0f [gaim-migrate @ 4962]
Sean Egan <seanegan@pidgin.im>
parents: 4650
diff changeset
3723 } else {
5579
9a3dbd24e80a [gaim-migrate @ 5983]
Sean Egan <seanegan@pidgin.im>
parents: 5577
diff changeset
3724 gaim_connection_error(gc, _("You have been signed off for an unknown reason."));
4651
7f6df9e4cb0f [gaim-migrate @ 4962]
Sean Egan <seanegan@pidgin.im>
parents: 4650
diff changeset
3725 }
4666
fd74a2faaf94 [gaim-migrate @ 4977]
Mark Doliner <markdoliner@pidgin.im>
parents: 4665
diff changeset
3726 od->killme = TRUE;
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3727 }
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3728
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3729 return 1;
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3730 }
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3731
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
3732 static int conninitdone_bos(aim_session_t *sess, aim_frame_t *fr, ...) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3733
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3734 aim_reqpersonalinfo(sess, fr->conn);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3735
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3736 #ifndef NOSSI
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3737 gaim_debug(GAIM_DEBUG_INFO, "oscar", "ssi: requesting ssi list\n");
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
3738 aim_ssi_reqrights(sess);
6350
22dfc953f2fb [gaim-migrate @ 6849]
Ethan Blanton <elb@pidgin.im>
parents: 6318
diff changeset
3739 aim_ssi_reqdata(sess);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3740 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3741
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3742 aim_bos_reqlocaterights(sess, fr->conn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3743 aim_bos_reqbuddyrights(sess, fr->conn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3744 aim_im_reqparams(sess);
5948
2527d515c3b8 [gaim-migrate @ 6392]
Mark Doliner <markdoliner@pidgin.im>
parents: 5920
diff changeset
3745 aim_bos_reqrights(sess, fr->conn); /* XXX - Don't call this with ssi? */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3746
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3747 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3748 aim_bos_setgroupperm(sess, fr->conn, AIM_FLAG_ALLUSERS);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3749 aim_bos_setprivacyflags(sess, fr->conn, AIM_PRIVFLAGS_ALLOWIDLE | AIM_PRIVFLAGS_ALLOWMEMBERSINCE);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3750 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3751
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3752 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3753 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3754
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
3755 static int conninitdone_admin(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3756 GaimConnection *gc = sess->aux_data;
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3757 struct oscar_data *od = gc->proto_data;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3758
2672
5c9b7617a1f3 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
3759 aim_clientready(sess, fr->conn);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3760 gaim_debug(GAIM_DEBUG_INFO, "oscar", "connected to admin\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3761
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3762 if (od->chpass) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3763 gaim_debug(GAIM_DEBUG_INFO, "oscar", "changing password\n");
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3764 aim_admin_changepasswd(sess, fr->conn, od->newp, od->oldp);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3765 g_free(od->oldp);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3766 od->oldp = NULL;
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3767 g_free(od->newp);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3768 od->newp = NULL;
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3769 od->chpass = FALSE;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3770 }
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3771 if (od->setnick) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3772 gaim_debug(GAIM_DEBUG_INFO, "oscar", "formatting screenname\n");
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3773 aim_admin_setnick(sess, fr->conn, od->newsn);
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3774 g_free(od->newsn);
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3775 od->newsn = NULL;
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3776 od->setnick = FALSE;
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3777 }
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3778 if (od->conf) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3779 gaim_debug(GAIM_DEBUG_INFO, "oscar", "confirming account\n");
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3780 aim_admin_reqconfirm(sess, fr->conn);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3781 od->conf = FALSE;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3782 }
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3783 if (od->reqemail) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3784 gaim_debug(GAIM_DEBUG_INFO, "oscar", "requesting email\n");
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3785 aim_admin_getinfo(sess, fr->conn, 0x0011);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3786 od->reqemail = FALSE;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3787 }
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3788 if (od->setemail) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3789 gaim_debug(GAIM_DEBUG_INFO, "oscar", "setting email\n");
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3790 aim_admin_setemail(sess, fr->conn, od->email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3791 g_free(od->email);
5497
da3c08f3af25 [gaim-migrate @ 5893]
Mark Doliner <markdoliner@pidgin.im>
parents: 5493
diff changeset
3792 od->email = NULL;
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3793 od->setemail = FALSE;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3794 }
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3795
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3796 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3797 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3798
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3799 static int gaim_icbm_param_info(aim_session_t *sess, aim_frame_t *fr, ...) {
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3800 struct aim_icbmparameters *params;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3801 va_list ap;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3802
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3803 va_start(ap, fr);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3804 params = va_arg(ap, struct aim_icbmparameters *);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3805 va_end(ap);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3806
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3807 /* XXX - evidently this crashes on solaris. i have no clue why
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3808 gaim_debug(GAIM_DEBUG_MISC, "oscar", "ICBM Parameters: maxchannel = %hu, default flags = 0x%08lx, max msg len = %hu, "
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
3809 "max sender evil = %f, max receiver evil = %f, min msg interval = %u\n",
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3810 params->maxchan, params->flags, params->maxmsglen,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3811 ((float)params->maxsenderwarn)/10.0, ((float)params->maxrecverwarn)/10.0,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3812 params->minmsginterval);
2427
761801814c88 [gaim-migrate @ 2440]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2421
diff changeset
3813 */
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3814
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3815 /* Maybe senderwarn and recverwarn should be user preferences... */
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3816 params->flags = 0x0000000b;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3817 params->maxmsglen = 8000;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3818 params->minmsginterval = 0;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3819
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3820 aim_im_setparams(sess, params);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3821
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3822 return 1;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3823 }
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3824
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3825 static int gaim_parse_locaterights(aim_session_t *sess, aim_frame_t *fr, ...)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3826 {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3827 GaimConnection *gc = sess->aux_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3828 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
5306
1707fdf8c530 [gaim-migrate @ 5678]
Mark Doliner <markdoliner@pidgin.im>
parents: 5302
diff changeset
3829 va_list ap;
1707fdf8c530 [gaim-migrate @ 5678]
Mark Doliner <markdoliner@pidgin.im>
parents: 5302
diff changeset
3830 fu16_t maxsiglen;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3831
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3832 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3833 maxsiglen = (fu16_t) va_arg(ap, int);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3834 va_end(ap);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3835
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3836 gaim_debug(GAIM_DEBUG_MISC, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3837 "locate rights: max sig len = %d\n", maxsiglen);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3838
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3839 od->rights.maxsiglen = od->rights.maxawaymsglen = (guint)maxsiglen;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3840
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3841 if (od->icq)
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3842 aim_bos_setprofile(sess, fr->conn, NULL, NULL, 0, NULL, NULL, 0, caps_icq);
5301
38f02eecad54 [gaim-migrate @ 5673]
Mark Doliner <markdoliner@pidgin.im>
parents: 5300
diff changeset
3843 else
5954
58e43cf2dc1f [gaim-migrate @ 6398]
Mark Doliner <markdoliner@pidgin.im>
parents: 5948
diff changeset
3844 oscar_set_info(gc, gc->account->user_info);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3845
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3846 return 1;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3847 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3848
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3849 static int gaim_parse_buddyrights(aim_session_t *sess, aim_frame_t *fr, ...) {
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3850 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3851 fu16_t maxbuddies, maxwatchers;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3852 GaimConnection *gc = sess->aux_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3853 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3854
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3855 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3856 maxbuddies = (fu16_t) va_arg(ap, unsigned int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3857 maxwatchers = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3858 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3859
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3860 gaim_debug(GAIM_DEBUG_MISC, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3861 "buddy list rights: Max buddies = %hu / Max watchers = %hu\n", maxbuddies, maxwatchers);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3862
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3863 od->rights.maxbuddies = (guint)maxbuddies;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3864 od->rights.maxwatchers = (guint)maxwatchers;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3865
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3866 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3867 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3868
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3869 static int gaim_bosrights(aim_session_t *sess, aim_frame_t *fr, ...) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3870 fu16_t maxpermits, maxdenies;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3871 va_list ap;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3872 GaimConnection *gc = sess->aux_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3873 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3874
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3875 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3876 maxpermits = (fu16_t) va_arg(ap, unsigned int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3877 maxdenies = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3878 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3879
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3880 gaim_debug(GAIM_DEBUG_MISC, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3881 "BOS rights: Max permit = %hu / Max deny = %hu\n", maxpermits, maxdenies);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3882
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3883 od->rights.maxpermits = (guint)maxpermits;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3884 od->rights.maxdenies = (guint)maxdenies;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3885
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
3886 gaim_connection_set_state(gc, GAIM_CONNECTED);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3887 serv_finish_login(gc);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3888
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3889 gaim_debug(GAIM_DEBUG_INFO, "oscar", "buddy list loaded\n");
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3890
2672
5c9b7617a1f3 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
3891 aim_clientready(sess, fr->conn);
5948
2527d515c3b8 [gaim-migrate @ 6392]
Mark Doliner <markdoliner@pidgin.im>
parents: 5920
diff changeset
3892 aim_srv_setavailmsg(sess, NULL);
5917
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
3893 aim_bos_setidle(sess, fr->conn, 0);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3894
4664
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
3895 if (od->icq) {
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
3896 aim_icq_reqofflinemsgs(sess);
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
3897 aim_icq_hideip(sess);
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
3898 }
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3899
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3900 aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_CHATNAV);
4102
06290da3f88d [gaim-migrate @ 4317]
Mark Doliner <markdoliner@pidgin.im>
parents: 4076
diff changeset
3901 if (sess->authinfo->email)
06290da3f88d [gaim-migrate @ 4317]
Mark Doliner <markdoliner@pidgin.im>
parents: 4076
diff changeset
3902 aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_EMAIL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3903
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3904 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3905 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3906
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3907 static int gaim_offlinemsg(aim_session_t *sess, aim_frame_t *fr, ...) {
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3908 va_list ap;
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3909 struct aim_icq_offlinemsg *msg;
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3910 struct aim_incomingim_ch4_args args;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3911 time_t t;
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3912
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3913 va_start(ap, fr);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3914 msg = va_arg(ap, struct aim_icq_offlinemsg *);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3915 va_end(ap);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3916
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3917 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3918 "Received offline message. Converting to channel 4 ICBM...\n");
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3919 args.uin = msg->sender;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3920 args.type = msg->type;
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3921 args.flags = msg->flags;
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3922 args.msglen = msg->msglen;
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3923 args.msg = msg->msg;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3924 t = get_time(msg->year, msg->month, msg->day, msg->hour, msg->minute, 0);
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3925 incomingim_chan4(sess, fr->conn, NULL, &args, t);
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3926
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3927 return 1;
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3928 }
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3929
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3930 static int gaim_offlinemsgdone(aim_session_t *sess, aim_frame_t *fr, ...)
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3931 {
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3932 aim_icq_ackofflinemsgs(sess);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3933 return 1;
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3934 }
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3935
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
3936 static int gaim_icqinfo(aim_session_t *sess, aim_frame_t *fr, ...)
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3937 {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3938 GaimConnection *gc = sess->aux_data;
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3939 gchar *buf, *tmp, *utf8;
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
3940 gchar who[16];
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3941 va_list ap;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3942 struct aim_icq_info *info;
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3943
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3944 va_start(ap, fr);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3945 info = va_arg(ap, struct aim_icq_info *);
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3946 va_end(ap);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3947
4664
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
3948 if (!info->uin)
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
3949 return 0;
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
3950
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
3951 g_snprintf(who, sizeof(who), "%u", info->uin);
4820
1e869f00810b [gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents: 4819
diff changeset
3952 buf = g_strdup_printf("<b>%s</b> %s", _("UIN:"), who);
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3953 if (info->nick && info->nick[0] && (utf8 = gaim_try_conv_to_utf8(info->nick))) {
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3954 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Nick:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3955 }
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3956 if (info->first && info->first[0] && (utf8 = gaim_try_conv_to_utf8(info->first))) {
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3957 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("First Name:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3958 }
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3959 if (info->last && info->last[0] && (utf8 = gaim_try_conv_to_utf8(info->last))) {
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3960 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Last Name:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3961 }
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3962 if (info->email && info->email[0] && (utf8 = gaim_try_conv_to_utf8(info->email))) {
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3963 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
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
3964 }
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
3965 if (info->numaddresses && info->email2) {
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
3966 int i;
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
3967 for (i = 0; i < info->numaddresses; i++) {
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3968 if (info->email2[i] && info->email2[i][0] && (utf8 = gaim_try_conv_to_utf8(info->email2[i]))) {
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3969 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
549034ae52ab [gaim-migrate @ 4953]
Nathan Walp <nwalp@pidgin.im>
parents: 4642
diff changeset
3970 }
4625
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
3971 }
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
3972 }
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3973 if (info->mobile && info->mobile[0] && (utf8 = gaim_try_conv_to_utf8(info->mobile))) {
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3974 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Mobile Phone:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4625
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
3975 }
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
3976 if (info->gender) {
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3977 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Gender:"), "</b> ", info->gender==1 ? _("Female") : _("Male"), NULL); g_free(tmp);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3978 }
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
3979 if (info->birthyear || info->birthmonth || info->birthday) {
4627
4895653771a7 [gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents: 4625
diff changeset
3980 char date[30];
4895653771a7 [gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents: 4625
diff changeset
3981 struct tm tm;
4895653771a7 [gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents: 4625
diff changeset
3982 tm.tm_mday = (int)info->birthday;
4895653771a7 [gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents: 4625
diff changeset
3983 tm.tm_mon = (int)info->birthmonth-1;
4895653771a7 [gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents: 4625
diff changeset
3984 tm.tm_year = (int)info->birthyear-1900;
4628
446fbf2f42d2 [gaim-migrate @ 4919]
Sean Egan <seanegan@pidgin.im>
parents: 4627
diff changeset
3985 strftime(date, sizeof(date), "%x", &tm);
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3986 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Birthday:"), "</b> ", date, NULL); g_free(tmp);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3987 }
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
3988 if (info->age) {
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
3989 char age[5];
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
3990 snprintf(age, sizeof(age), "%hhd", info->age);
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3991 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Age:"), "</b> ", age, NULL); g_free(tmp);
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3992 }
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3993 if (info->personalwebpage && info->personalwebpage[0] && (utf8 = gaim_try_conv_to_utf8(info->personalwebpage))) {
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3994 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);
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3995 }
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3996 if (info->info && info->info[0] && (utf8 = gaim_try_conv_to_utf8(info->info))) {
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3997 tmp = buf; buf = g_strconcat(tmp, "<hr><b>", _("Additional Information:"), "</b><br>", utf8, NULL); g_free(tmp); g_free(utf8);
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
3998 }
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
3999 tmp = buf; buf = g_strconcat(tmp, "<hr>\n", NULL); g_free(tmp);
4641
bcc6f5e3018a [gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
4000 if ((info->homeaddr && (info->homeaddr[0])) || (info->homecity && info->homecity[0]) || (info->homestate && info->homestate[0]) || (info->homezip && info->homezip[0])) {
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4001 tmp = buf; buf = g_strconcat(tmp, "<b>", _("Home Address:"), "</b>", NULL); g_free(tmp);
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4002 if (info->homeaddr && info->homeaddr[0] && (utf8 = gaim_try_conv_to_utf8(info->homeaddr))) {
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4003 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Address:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
4004 }
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4005 if (info->homecity && info->homecity[0] && (utf8 = gaim_try_conv_to_utf8(info->homecity))) {
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4006 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("City:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
4007 }
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4008 if (info->homestate && info->homestate[0] && (utf8 = gaim_try_conv_to_utf8(info->homestate))) {
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4009 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("State:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
4010 }
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4011 if (info->homezip && info->homezip[0] && (utf8 = gaim_try_conv_to_utf8(info->homezip))) {
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4012 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Zip Code:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
4013 }
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
4014 tmp = buf; buf = g_strconcat(tmp, "\n<hr>\n", NULL); g_free(tmp);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4015 }
4641
bcc6f5e3018a [gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
4016 if ((info->workaddr && info->workaddr[0]) || (info->workcity && info->workcity[0]) || (info->workstate && info->workstate[0]) || (info->workzip && info->workzip[0])) {
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4017 tmp = buf; buf = g_strconcat(tmp, "<b>", _("Work Address:"), "</b>", NULL); g_free(tmp);
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4018 if (info->workaddr && info->workaddr[0] && (utf8 = gaim_try_conv_to_utf8(info->workaddr))) {
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4019 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Address:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
4020 }
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4021 if (info->workcity && info->workcity[0] && (utf8 = gaim_try_conv_to_utf8(info->workcity))) {
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4022 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("City:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
4023 }
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4024 if (info->workstate && info->workstate[0] && (utf8 = gaim_try_conv_to_utf8(info->workstate))) {
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4025 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("State:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
4026 }
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4027 if (info->workzip && info->workzip[0] && (utf8 = gaim_try_conv_to_utf8(info->workzip))) {
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4028 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Zip Code:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
4029 }
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
4030 tmp = buf; buf = g_strconcat(tmp, "\n<hr>\n", NULL); g_free(tmp);
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
4031 }
4641
bcc6f5e3018a [gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
4032 if ((info->workcompany && info->workcompany[0]) || (info->workdivision && info->workdivision[0]) || (info->workposition && info->workposition[0]) || (info->workwebpage && info->workwebpage[0])) {
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4033 tmp = buf; buf = g_strconcat(tmp, "<b>", _("Work Information:"), "</b>", NULL); g_free(tmp);
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4034 if (info->workcompany && info->workcompany[0] && (utf8 = gaim_try_conv_to_utf8(info->workcompany))) {
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4035 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Company:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
4036 }
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4037 if (info->workdivision && info->workdivision[0] && (utf8 = gaim_try_conv_to_utf8(info->workdivision))) {
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4038 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Division:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
4039 }
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4040 if (info->workposition && info->workposition[0] && (utf8 = gaim_try_conv_to_utf8(info->workposition))) {
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4041 tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Position:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8);
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
4042 }
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4043 if (info->workwebpage && info->workwebpage[0] && (utf8 = gaim_try_conv_to_utf8(info->workwebpage))) {
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
4044 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
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
4045 }
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
4046 tmp = buf; buf = g_strconcat(tmp, "\n<hr>\n", NULL); g_free(tmp);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4047 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4048
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4049 g_show_info_text(gc, who, 2, buf, NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4050 g_free(buf);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4051
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
4052 return 1;
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
4053 }
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
4054
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4055 static int gaim_icqalias(aim_session_t *sess, aim_frame_t *fr, ...)
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4056 {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4057 GaimConnection *gc = sess->aux_data;
4820
1e869f00810b [gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents: 4819
diff changeset
4058 gchar who[16], *utf8;
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4059 struct buddy *b;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4060 va_list ap;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4061 struct aim_icq_info *info;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4062
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4063 va_start(ap, fr);
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4064 info = va_arg(ap, struct aim_icq_info *);
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4065 va_end(ap);
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4066
4822
3badfb395070 [gaim-migrate @ 5147]
Mark Doliner <markdoliner@pidgin.im>
parents: 4821
diff changeset
4067 if (info->uin && info->nick && info->nick[0] && (utf8 = gaim_try_conv_to_utf8(info->nick))) {
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
4068 g_snprintf(who, sizeof(who), "%u", info->uin);
4820
1e869f00810b [gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents: 4819
diff changeset
4069 serv_got_alias(gc, who, utf8);
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4070 if ((b = gaim_find_buddy(gc->account, who))) {
4820
1e869f00810b [gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents: 4819
diff changeset
4071 gaim_buddy_set_setting(b, "servernick", utf8);
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4072 gaim_blist_save();
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4073 }
4820
1e869f00810b [gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents: 4819
diff changeset
4074 g_free(utf8);
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4075 }
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4076
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4077 return 1;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4078 }
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4079
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4080 static int gaim_popup(aim_session_t *sess, aim_frame_t *fr, ...)
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4081 {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4082 char *msg, *url;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4083 fu16_t wid, hei, delay;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4084 va_list ap;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4085
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4086 va_start(ap, fr);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4087 msg = va_arg(ap, char *);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4088 url = va_arg(ap, char *);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4089 wid = (fu16_t) va_arg(ap, int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4090 hei = (fu16_t) va_arg(ap, int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4091 delay = (fu16_t) va_arg(ap, int);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4092 va_end(ap);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4093
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4094 serv_got_popup(msg, url, wid, hei);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4095
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4096 return 1;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4097 }
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4098
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4099 static int gaim_parse_searchreply(aim_session_t *sess, aim_frame_t *fr, ...) {
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
4100 GString *buf;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4101 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4102 char *address, *SNs;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4103 int i, num;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4104
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4105 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4106 address = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4107 num = va_arg(ap, int);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4108 SNs = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4109 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4110
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
4111 buf = g_string_new("");
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
4112 g_string_printf(buf, _("<B>%s has the following screen names:</B><BR>"), address);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4113 for (i = 0; i < num; i++)
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
4114 g_string_append_printf(buf, "%s<br>", &SNs[i * (MAXSNLEN + 1)]);
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
4115 g_show_info_text(NULL, NULL, 2, buf->str, NULL);
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
4116 g_string_free(buf, TRUE);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4117
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4118 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4119 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4120
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4121 static int gaim_parse_searcherror(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4122 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4123 char *address;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
4124 char *buf;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4125
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4126 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4127 address = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4128 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4129
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
4130 buf = g_strdup_printf(_("No results found for email address %s"), address);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4131 gaim_notify_error(sess->aux_data, NULL, buf, NULL);
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
4132 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4133
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4134 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4135 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4136
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4137 static int gaim_account_confirm(aim_session_t *sess, aim_frame_t *fr, ...) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4138 fu16_t status;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4139 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4140 char msg[256];
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4141 GaimConnection *gc = sess->aux_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4142
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4143 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4144 status = (fu16_t) va_arg(ap, unsigned int); /* status code of confirmation request */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4145 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4146
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4147 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4148 "account confirmation returned status 0x%04x (%s)\n", status,
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4149 status ? "unknown" : "email sent");
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4150 if (!status) {
5302
48db3c9dc259 [gaim-migrate @ 5674]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5301
diff changeset
4151 g_snprintf(msg, sizeof(msg), _("You should receive an email asking to confirm %s."),
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4152 gaim_account_get_username(gaim_connection_get_account(gc)));
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4153 gaim_notify_info(gc, NULL, _("Account Confirmation Requested"), msg);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4154 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4155
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4156 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4157 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4158
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4159 static int gaim_info_change(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4160 GaimConnection *gc = sess->aux_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4161 va_list ap;
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4162 fu16_t perms, err;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4163 char *url, *sn, *email;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4164 int change;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4165
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4166 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4167 change = va_arg(ap, int);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4168 perms = (fu16_t) va_arg(ap, unsigned int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4169 err = (fu16_t) va_arg(ap, unsigned int);
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4170 url = va_arg(ap, char *);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4171 sn = va_arg(ap, char *);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4172 email = va_arg(ap, char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4173 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4174
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4175 gaim_debug(GAIM_DEBUG_MISC, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4176 "account info: because of %s, perms=0x%04x, err=0x%04x, url=%s, sn=%s, email=%s\n",
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4177 change ? "change" : "request", perms, err, url, sn, email);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4178
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4179 if (err && url) {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4180 char *dialog_msg;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4181 char *dialog_top = g_strdup_printf(_("Error Changing Account Info"));
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4182 switch (err) {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4183 case 0x0001: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4184 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to format screen name because the requested screen name differs from the original."), err);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4185 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4186 case 0x0006: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4187 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to format screen name because the requested screen name ends in a space."), err);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4188 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4189 case 0x000b: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4190 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to format screen name because the requested screen name is too long."), err);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4191 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4192 case 0x001d: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4193 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);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4194 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4195 case 0x0021: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4196 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);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4197 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4198 case 0x0023: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4199 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to change email address because the given address is invalid."), err);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4200 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4201 default: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4202 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unknown error."), err);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4203 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4204 }
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4205 gaim_notify_error(gc, NULL, dialog_top, dialog_msg);
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4206 g_free(dialog_top);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4207 g_free(dialog_msg);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4208 return 1;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4209 }
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4210
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4211 if (sn) {
4585
cd29170cbc26 [gaim-migrate @ 4869]
Matthew Smith <matthew@smigs.co.uk>
parents: 4508
diff changeset
4212 char *dialog_msg = g_strdup_printf(_("Your screen name is currently formatted as follows:\n%s"), sn);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4213 gaim_notify_info(gc, NULL, _("Account Info"), dialog_msg);
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4214 g_free(dialog_msg);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4215 }
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4216
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4217 if (email) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4218 char *dialog_msg = g_strdup_printf(_("The email address for %s is %s"),
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4219 gaim_account_get_username(gaim_connection_get_account(gc)), email);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4220 gaim_notify_info(gc, NULL, _("Account Info"), dialog_msg);
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4221 g_free(dialog_msg);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4222 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4223
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4224 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4225 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4226
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4227 static void oscar_keepalive(GaimConnection *gc) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4228 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4229 aim_flap_nop(od->sess, od->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4230 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4231
6059
9934c862ca14 [gaim-migrate @ 6509]
John Silvestri <john.silvestri@gmail.com>
parents: 6053
diff changeset
4232 static int oscar_send_typing(GaimConnection *gc, const char *name, int typing) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4233 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4234 struct direct_im *dim = find_direct_im(od, name);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4235 if (dim)
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
4236 if (typing == GAIM_TYPING)
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
4237 aim_odc_send_typing(od->sess, dim->conn, 0x0002);
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
4238 else if (typing == GAIM_TYPED)
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
4239 aim_odc_send_typing(od->sess, dim->conn, 0x0001);
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
4240 else
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
4241 aim_odc_send_typing(od->sess, dim->conn, 0x0000);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4242 else {
5300
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
4243 /* Don't send if this turkey is in our deny list */
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
4244 GSList *list;
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
4245 for (list=gc->account->deny; (list && aim_sncmp(name, list->data)); list=list->next);
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
4246 if (!list) {
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
4247 struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, normalize(name));
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
4248 if (bi && bi->typingnot) {
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
4249 if (typing == GAIM_TYPING)
5300
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
4250 aim_im_sendmtn(od->sess, 0x0001, name, 0x0002);
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
4251 else if (typing == GAIM_TYPED)
5300
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
4252 aim_im_sendmtn(od->sess, 0x0001, name, 0x0001);
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
4253 else
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
4254 aim_im_sendmtn(od->sess, 0x0001, name, 0x0000);
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
4255 }
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4256 }
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4257 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4258 return 0;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4259 }
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4260 static void oscar_ask_direct_im(GaimConnection *gc, const char *name);
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4261
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4262 static int oscar_send_im(GaimConnection *gc, const char *name, const char *message, int len, int imflags) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4263 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4264 struct direct_im *dim = find_direct_im(od, name);
2303
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
4265 int ret = 0;
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4266 GError *err = NULL;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4267 const char *iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc));
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
4268 char *tmpmsg = NULL;
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
4269
4838
653f06ff2acf [gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents: 4834
diff changeset
4270 if (dim && dim->connected) {
653f06ff2acf [gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents: 4834
diff changeset
4271 /* If we're directly connected, send a direct IM */
653f06ff2acf [gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents: 4834
diff changeset
4272 /* XXX - The last parameter below is the encoding. Let Paco-Paco do something with it. */
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
4273 if (imflags & IM_FLAG_AWAY)
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
4274 ret = aim_odc_send_im(od->sess, dim->conn, message, len == -1 ? strlen(message) : len, 0, 1);
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
4275 else
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
4276 ret = aim_odc_send_im(od->sess, dim->conn, message, len == -1 ? strlen(message) : len, 0, 0);
3044
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
4277 } else if (len != -1) {
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
4278 /* Trying to send an IM image outside of a direct connection. */
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
4279 oscar_ask_direct_im(gc, name);
4838
653f06ff2acf [gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents: 4834
diff changeset
4280 ret = -ENOTCONN;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4281 } else {
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4282 struct buddyinfo *bi;
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4283 struct aim_sendimext_args args;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4284 struct stat st;
6478
2c3fe7c8659b [gaim-migrate @ 6991]
Robert McQueen <robot101@debian.org>
parents: 6465
diff changeset
4285 gsize len;
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4286
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4287 bi = g_hash_table_lookup(od->buddyinfo, normalize(name));
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4288 if (!bi) {
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4289 bi = g_new0(struct buddyinfo, 1);
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4290 g_hash_table_insert(od->buddyinfo, g_strdup(normalize(name)), bi);
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4291 }
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4292
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4293 args.flags = AIM_IMFLAGS_ACK | AIM_IMFLAGS_CUSTOMFEATURES;
4665
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
4294 if (od->icq) {
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
4295 args.features = features_icq;
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
4296 args.featureslen = sizeof(features_icq);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4297 args.flags |= AIM_IMFLAGS_OFFLINE;
4665
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
4298 } else {
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
4299 args.features = features_aim;
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
4300 args.featureslen = sizeof(features_aim);
4972
3dd342b21444 [gaim-migrate @ 5306]
Mark Doliner <markdoliner@pidgin.im>
parents: 4969
diff changeset
4301
3dd342b21444 [gaim-migrate @ 5306]
Mark Doliner <markdoliner@pidgin.im>
parents: 4969
diff changeset
4302 if (imflags & IM_FLAG_AWAY)
3dd342b21444 [gaim-migrate @ 5306]
Mark Doliner <markdoliner@pidgin.im>
parents: 4969
diff changeset
4303 args.flags |= AIM_IMFLAGS_AWAY;
4665
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
4304 }
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4305
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4306 if (bi->ico_need) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4307 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4308 "Sending buddy icon request with message\n");
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4309 args.flags |= AIM_IMFLAGS_BUDDYREQ;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4310 bi->ico_need = FALSE;
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4311 }
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4312
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4313 if (iconfile && !stat(iconfile, &st)) {
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4314 FILE *file = fopen(iconfile, "r");
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4315 if (file) {
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4316 char *buf = g_malloc(st.st_size);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4317 fread(buf, 1, st.st_size, file);
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4318 fclose(file);
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4319
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4320 args.iconlen = st.st_size;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4321 args.iconsum = aimutil_iconsum(buf, st.st_size);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4322 args.iconstamp = st.st_mtime;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4323
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4324 if ((args.iconlen != bi->ico_me_len) || (args.iconsum != bi->ico_me_csum) || (args.iconstamp != bi->ico_me_time))
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4325 bi->ico_informed = FALSE;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4326
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4327 if (!bi->ico_informed) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4328 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4329 "Claiming to have a buddy icon\n");
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4330 args.flags |= AIM_IMFLAGS_HASICON;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4331 bi->ico_me_len = args.iconlen;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4332 bi->ico_me_csum = args.iconsum;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4333 bi->ico_me_time = args.iconstamp;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4334 bi->ico_informed = TRUE;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4335 }
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4336
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4337 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4338 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4339 }
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4340
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4341 args.destsn = name;
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4342
6310
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
4343 /* For ICQ send newlines as CR/LF, for AIM send newlines as <BR> */
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
4344 if (isdigit(name[0]))
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
4345 tmpmsg = add_cr(message);
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
4346 else
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
4347 tmpmsg = strdup_withhtml(message);
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
4348 len = strlen(tmpmsg);
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
4349
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
4350 args.flags |= oscar_encoding_check(tmpmsg);
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4351 if (args.flags & AIM_IMFLAGS_UNICODE) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4352 gaim_debug(GAIM_DEBUG_INFO, "oscar", "Sending Unicode IM\n");
4662
740f32459759 [gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents: 4657
diff changeset
4353 args.charset = 0x0002;
4665
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
4354 args.charsubset = 0x0000;
6310
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
4355 args.msg = g_convert(tmpmsg, len, "UCS-2BE", "UTF-8", NULL, &len, &err);
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4356 if (err) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4357 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4358 "Error converting a unicode message: %s\n", err->message);
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4359 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4360 "This really shouldn't happen!\n");
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4361 /* We really shouldn't try to send the
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4362 * IM now, but I'm not sure what to do */
4800
b8a226b0ddca [gaim-migrate @ 5120]
Ethan Blanton <elb@pidgin.im>
parents: 4799
diff changeset
4363 g_error_free(err);
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4364 }
3850
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
4365 } else if (args.flags & AIM_IMFLAGS_ISO_8859_1) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4366 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4367 "Sending ISO-8859-1 IM\n");
4662
740f32459759 [gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents: 4657
diff changeset
4368 args.charset = 0x0003;
4665
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
4369 args.charsubset = 0x0000;
6310
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
4370 args.msg = g_convert(tmpmsg, len, "ISO-8859-1", "UTF-8", NULL, &len, &err);
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4371 if (err) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4372 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4373 "conversion error: %s\n", err->message);
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4374 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4375 "Someone tell Ethan his 8859-1 detection is wrong\n");
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4376 args.flags ^= AIM_IMFLAGS_ISO_8859_1 | AIM_IMFLAGS_UNICODE;
6310
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
4377 len = strlen(tmpmsg);
4800
b8a226b0ddca [gaim-migrate @ 5120]
Ethan Blanton <elb@pidgin.im>
parents: 4799
diff changeset
4378 g_error_free(err);
6310
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
4379 args.msg = g_convert(tmpmsg, len, "UCS-2BE", "UTF8", NULL, &len, &err);
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4380 if (err) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4381 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4382 "Error in unicode fallback: %s\n", err->message);
4800
b8a226b0ddca [gaim-migrate @ 5120]
Ethan Blanton <elb@pidgin.im>
parents: 4799
diff changeset
4383 g_error_free(err);
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4384 }
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4385 }
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4386 } else {
4662
740f32459759 [gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents: 4657
diff changeset
4387 args.charset = 0x0000;
740f32459759 [gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents: 4657
diff changeset
4388 args.charsubset = 0x0000;
6310
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
4389 args.msg = tmpmsg;
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4390 }
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4391 args.msglen = len;
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4392
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4393 ret = aim_im_sendch1_ext(od->sess, &args);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4394 }
4838
653f06ff2acf [gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents: 4834
diff changeset
4395
6310
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
4396 g_free(tmpmsg);
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
4397
2303
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
4398 if (ret >= 0)
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
4399 return 1;
6310
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
4400
2303
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
4401 return ret;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4402 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4403
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4404 static void oscar_get_info(GaimConnection *g, const char *name) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4405 struct oscar_data *od = (struct oscar_data *)g->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4406 if (od->icq)
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
4407 aim_icq_getallinfo(od->sess, name);
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
4408 else
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4409 /* people want the away message on the top, so we get the away message
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4410 * first and then get the regular info, since it's too difficult to
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4411 * insert in the middle. i hate people. */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4412 aim_getinfo(od->sess, od->conn, name, AIM_GETINFO_AWAYMESSAGE);
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4413 }
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4414
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4415 static void oscar_get_away(GaimConnection *g, const char *who) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4416 struct oscar_data *od = (struct oscar_data *)g->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4417 if (od->icq) {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4418 struct buddy *budlight = gaim_find_buddy(g->account, who);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4419 if (budlight)
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4420 if ((budlight->uc & 0xffff0000) >> 16)
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4421 aim_im_sendch2_geticqaway(od->sess, who, (budlight->uc & 0xffff0000) >> 16);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4422 else
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4423 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4424 "Error: The user %s has no status message, therefore not requesting.\n", who);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4425 else
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4426 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4427 "Error: Could not find %s in local contact list, therefore unable to request status message.\n", who);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4428 } else
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4429 aim_getinfo(od->sess, od->conn, who, AIM_GETINFO_GENERALINFO);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4430 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4431
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4432 static void oscar_set_dir(GaimConnection *g, const char *first, const char *middle, const char *last,
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
4433 const char *maiden, const char *city, const char *state, const char *country, int web) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4434 /* XXX - some of these things are wrong, but i'm lazy */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4435 struct oscar_data *od = (struct oscar_data *)g->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4436 aim_setdirectoryinfo(od->sess, od->conn, first, middle, last,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4437 maiden, NULL, NULL, city, state, NULL, 0, web);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4438 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4439
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4440 static void oscar_set_idle(GaimConnection *gc, int time) {
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4441 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4442 aim_bos_setidle(od->sess, od->conn, time);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4443 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4444
5954
58e43cf2dc1f [gaim-migrate @ 6398]
Mark Doliner <markdoliner@pidgin.im>
parents: 5948
diff changeset
4445 static void oscar_set_info(GaimConnection *gc, const char *text) {
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4446 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4447 fu32_t flags = 0;
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
4448 char *text_html = NULL;
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4449 char *msg = NULL;
6478
2c3fe7c8659b [gaim-migrate @ 6991]
Robert McQueen <robot101@debian.org>
parents: 6465
diff changeset
4450 gsize msglen = 0;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4451
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4452 if (od->rights.maxsiglen == 0)
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4453 gaim_notify_warning(gc, NULL, _("Unable to set AIM profile."),
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4454 _("You have probably requested to set your "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4455 "profile before the login procedure completed. "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4456 "Your profile remains unset; try setting it "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4457 "again when you are fully connected."));
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4458
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4459 if (od->icq)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4460 aim_bos_setprofile(od->sess, od->conn, NULL, NULL, 0, NULL, NULL, 0, caps_icq);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4461 else {
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4462 if (!text) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4463 aim_bos_setprofile(od->sess, od->conn, NULL, NULL, 0, NULL, NULL, 0, caps_aim);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4464 return;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4465 }
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
4466
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
4467 text_html = strdup_withhtml(text);
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
4468 flags = oscar_encoding_check(text_html);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4469 if (flags & AIM_IMFLAGS_UNICODE) {
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
4470 msg = g_convert(text_html, strlen(text_html), "UCS-2BE", "UTF-8", NULL, &msglen, NULL);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4471 aim_bos_setprofile(od->sess, od->conn, "unicode-2-0", msg, (msglen > od->rights.maxsiglen ? od->rights.maxsiglen : msglen), NULL, NULL, 0, caps_aim);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4472 g_free(msg);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4473 } else if (flags & AIM_IMFLAGS_ISO_8859_1) {
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
4474 msg = g_convert(text_html, strlen(text_html), "ISO-8859-1", "UTF-8", NULL, &msglen, NULL);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4475 aim_bos_setprofile(od->sess, od->conn, "iso-8859-1", msg, (msglen > od->rights.maxsiglen ? od->rights.maxsiglen : msglen), NULL, NULL, 0, caps_aim);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4476 g_free(msg);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4477 } else {
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
4478 msglen = strlen(text_html);
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
4479 aim_bos_setprofile(od->sess, od->conn, "us-ascii", text_html, (msglen > od->rights.maxsiglen ? od->rights.maxsiglen : msglen), NULL, NULL, 0, caps_aim);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4480 }
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4481
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4482 if (msglen > od->rights.maxsiglen) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4483 gchar *errstr;
6308
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 6302
diff changeset
4484 errstr = g_strdup_printf(ngettext("The maximum profile length of %d byte "
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 6302
diff changeset
4485 "has been exceeded. Gaim has truncated it for you.",
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 6302
diff changeset
4486 "The maximum profile length of %d bytes "
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 6302
diff changeset
4487 "has been exceeded. Gaim has truncated it for you.",
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 6302
diff changeset
4488 od->rights.maxsiglen), od->rights.maxsiglen);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4489 gaim_notify_warning(gc, NULL, _("Profile too long."), errstr);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4490 g_free(errstr);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4491 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4492
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
4493 g_free(text_html);
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
4494
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4495 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4496
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4497 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4498 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4499
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4500 static void oscar_set_away_aim(GaimConnection *gc, struct oscar_data *od, const char *text)
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4501 {
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4502 fu32_t flags = 0;
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
4503 gchar *text_html = NULL;
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4504 char *msg = NULL;
6478
2c3fe7c8659b [gaim-migrate @ 6991]
Robert McQueen <robot101@debian.org>
parents: 6465
diff changeset
4505 gsize msglen = 0;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4506
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4507 if (od->rights.maxawaymsglen == 0)
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4508 gaim_notify_warning(gc, NULL, _("Unable to set AIM away message."),
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4509 _("You have probably requested to set your "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4510 "away message before the login procedure "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4511 "completed. You remain in a \"present\" "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4512 "state; try setting it again when you are "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4513 "fully connected."));
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4514
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4515 if (gc->away) {
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4516 g_free(gc->away);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4517 gc->away = NULL;
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4518 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4519
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4520 if (!text) {
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4521 aim_bos_setprofile(od->sess, od->conn, NULL, NULL, 0, NULL, "", 0, caps_aim);
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4522 return;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4523 }
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4524
6037
6c1b8271bd3c [gaim-migrate @ 6487]
Mark Doliner <markdoliner@pidgin.im>
parents: 6035
diff changeset
4525 text_html = strdup_withhtml(text);
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
4526 flags = oscar_encoding_check(text_html);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4527 if (flags & AIM_IMFLAGS_UNICODE) {
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
4528 msg = g_convert(text_html, strlen(text_html), "UCS-2BE", "UTF-8", NULL, &msglen, NULL);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4529 aim_bos_setprofile(od->sess, od->conn, NULL, NULL, 0, "unicode-2-0", msg,
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4530 (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen), caps_aim);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4531 g_free(msg);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4532 gc->away = g_strndup(text, od->rights.maxawaymsglen/2);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4533 } else if (flags & AIM_IMFLAGS_ISO_8859_1) {
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
4534 msg = g_convert(text_html, strlen(text_html), "ISO-8859-1", "UTF-8", NULL, &msglen, NULL);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4535 aim_bos_setprofile(od->sess, od->conn, NULL, NULL, 0, "iso-8859-1", msg,
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4536 (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen), caps_aim);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4537 g_free(msg);
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
4538 gc->away = g_strndup(text_html, od->rights.maxawaymsglen);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4539 } else {
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
4540 msglen = strlen(text_html);
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
4541 aim_bos_setprofile(od->sess, od->conn, NULL, NULL, 0, "us-ascii", text_html,
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4542 (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen), caps_aim);
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
4543 gc->away = g_strndup(text_html, od->rights.maxawaymsglen);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4544 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4545
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4546 if (msglen > od->rights.maxawaymsglen) {
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4547 gchar *errstr;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4548
6308
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 6302
diff changeset
4549 errstr = g_strdup_printf(ngettext("The maximum away message length of %d byte "
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 6302
diff changeset
4550 "has been exceeded. Gaim has truncated it for you.",
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 6302
diff changeset
4551 "The maximum away message length of %d bytes "
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 6302
diff changeset
4552 "has been exceeded. Gaim has truncated it for you.",
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 6302
diff changeset
4553 od->rights.maxawaymsglen), od->rights.maxawaymsglen);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4554 gaim_notify_warning(gc, NULL, _("Away message too long."), errstr);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4555 g_free(errstr);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4556 }
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
4557
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
4558 g_free(text_html);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4559 return;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4560 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4561
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4562 static void oscar_set_away_icq(GaimConnection *gc, struct oscar_data *od, const char *state, const char *message)
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4563 {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4564 GaimAccount *account = gaim_connection_get_account(gc);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4565 if (gc->away) {
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4566 g_free(gc->away);
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4567 gc->away = NULL;
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4568 }
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4569
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4570 if (strcmp(state, _("Invisible"))) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4571 if ((od->sess->ssi.received_data) && (aim_ssi_getpermdeny(od->sess->ssi.local) != account->perm_deny))
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4572 aim_ssi_setpermdeny(od->sess, account->perm_deny, 0xffffffff);
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4573 account->perm_deny = 4;
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4574 } else {
5542
0f02c413c862 [gaim-migrate @ 5942]
Mark Doliner <markdoliner@pidgin.im>
parents: 5540
diff changeset
4575 if ((od->sess->ssi.received_data) && (aim_ssi_getpermdeny(od->sess->ssi.local) != 0x03))
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4576 aim_ssi_setpermdeny(od->sess, 0x03, 0xffffffff);
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4577 account->perm_deny = 3;
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4578 }
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4579
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4580 if (!strcmp(state, _("Online")))
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4581 aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL);
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4582 else if (!strcmp(state, _("Away"))) {
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4583 aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4584 gc->away = g_strdup("");
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4585 } else if (!strcmp(state, _("Do Not Disturb"))) {
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4586 aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_DND | AIM_ICQ_STATE_BUSY);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4587 gc->away = g_strdup("");
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4588 } else if (!strcmp(state, _("Not Available"))) {
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4589 aim_setextstatus(od->sess, AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4590 gc->away = g_strdup("");
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4591 } else if (!strcmp(state, _("Occupied"))) {
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4592 aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_BUSY);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4593 gc->away = g_strdup("");
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4594 } else if (!strcmp(state, _("Free For Chat"))) {
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4595 aim_setextstatus(od->sess, AIM_ICQ_STATE_CHAT);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4596 gc->away = g_strdup("");
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4597 } else if (!strcmp(state, _("Invisible"))) {
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4598 aim_setextstatus(od->sess, AIM_ICQ_STATE_INVISIBLE);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4599 gc->away = g_strdup("");
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4600 } else if (!strcmp(state, GAIM_AWAY_CUSTOM)) {
2998
358f3655b070 [gaim-migrate @ 3011]
Sean Egan <seanegan@pidgin.im>
parents: 2995
diff changeset
4601 if (message) {
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4602 aim_setextstatus(od->sess, AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4603 gc->away = g_strdup("");
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4604 } else {
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4605 aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL);
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4606 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4607 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4608
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4609 return;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4610 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4611
6059
9934c862ca14 [gaim-migrate @ 6509]
John Silvestri <john.silvestri@gmail.com>
parents: 6053
diff changeset
4612 static void oscar_set_away(GaimConnection *gc, const char *state, const char *message)
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4613 {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4614 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4615
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4616 if (od->icq)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4617 oscar_set_away_icq(gc, od, state, message);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4618 else
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4619 oscar_set_away_aim(gc, od, message);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4620
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4621 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4622 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4623
6059
9934c862ca14 [gaim-migrate @ 6509]
John Silvestri <john.silvestri@gmail.com>
parents: 6053
diff changeset
4624 static void oscar_warn(GaimConnection *gc, const char *name, int anon) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4625 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4626 aim_im_warn(od->sess, od->conn, name, anon ? AIM_WARN_ANON : 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4627 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4628
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4629 static void oscar_dir_search(GaimConnection *gc, const char *first, const char *middle, const char *last,
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
4630 const char *maiden, const char *city, const char *state, const char *country, const char *email) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4631 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4632 if (strlen(email))
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4633 aim_usersearch_address(od->sess, od->conn, email);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4634 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4635
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4636 static void oscar_add_buddy(GaimConnection *gc, const char *name) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4637 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4638 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4639 aim_add_buddy(od->sess, od->conn, name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4640 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4641 if ((od->sess->ssi.received_data) && !(aim_ssi_itemlist_exists(od->sess->ssi.local, name))) {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4642 struct buddy *buddy = gaim_find_buddy(gc->account, name);
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4643 struct group *group = gaim_find_buddys_group(buddy);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4644 if (buddy && group) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4645 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4646 "ssi: adding buddy %s to group %s\n", name, group->name);
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4647 aim_ssi_addbuddy(od->sess, buddy->name, group->name, gaim_get_buddy_alias_only(buddy), NULL, NULL, 0);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4648 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4649 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4650 #endif
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4651 if (od->icq)
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4652 aim_icq_getalias(od->sess, name);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4653 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4654
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4655 static void oscar_add_buddies(GaimConnection *gc, GList *buddies) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4656 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4657 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4658 char buf[MSG_LEN];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4659 int n=0;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4660 while (buddies) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4661 if (n > MSG_LEN - 18) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4662 aim_bos_setbuddylist(od->sess, od->conn, buf);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4663 n = 0;
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
4664 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4665 n += g_snprintf(buf + n, sizeof(buf) - n, "%s&", (char *)buddies->data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4666 buddies = buddies->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4667 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4668 aim_bos_setbuddylist(od->sess, od->conn, buf);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4669 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4670 if (od->sess->ssi.received_data) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4671 while (buddies) {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4672 struct buddy *buddy = gaim_find_buddy(gc->account, (const char *)buddies->data);
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4673 struct group *group = gaim_find_buddys_group(buddy);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4674 if (buddy && group) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4675 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4676 "ssi: adding buddy %s to group %s\n", (const char *)buddies->data, group->name);
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4677 aim_ssi_addbuddy(od->sess, buddy->name, group->name, gaim_get_buddy_alias_only(buddy), NULL, NULL, 0);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4678 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4679 buddies = buddies->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4680 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4681 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4682 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4683 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4684
6059
9934c862ca14 [gaim-migrate @ 6509]
John Silvestri <john.silvestri@gmail.com>
parents: 6053
diff changeset
4685 static void oscar_remove_buddy(GaimConnection *gc, const char *name, const char *group) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4686 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4687 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4688 aim_remove_buddy(od->sess, od->conn, name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4689 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4690 if (od->sess->ssi.received_data) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4691 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4692 "ssi: deleting buddy %s from group %s\n", name, group);
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4693 aim_ssi_delbuddy(od->sess, name, group);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4694 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4695 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4696 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4697
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4698 static void oscar_remove_buddies(GaimConnection *gc, GList *buddies, const char *group) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4699 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4700 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4701 GList *cur;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4702 for (cur=buddies; cur; cur=cur->next)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4703 aim_remove_buddy(od->sess, od->conn, cur->data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4704 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4705 if (od->sess->ssi.received_data) {
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
4706 while (buddies) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4707 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4708 "ssi: deleting buddy %s from group %s\n", (char *)buddies->data, group);
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4709 aim_ssi_delbuddy(od->sess, buddies->data, group);
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
4710 buddies = buddies->next;
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
4711 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4712 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4713 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4714 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4715
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4716 #ifndef NOSSI
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4717 static void oscar_move_buddy(GaimConnection *gc, const char *name, const char *old_group, const char *new_group) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4718 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
4303
121490448a58 [gaim-migrate @ 4557]
Mark Doliner <markdoliner@pidgin.im>
parents: 4299
diff changeset
4719 if (od->sess->ssi.received_data && strcmp(old_group, new_group)) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4720 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4721 "ssi: moving buddy %s from group %s to group %s\n", name, old_group, new_group);
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4722 aim_ssi_movebuddy(od->sess, old_group, new_group, name);
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4723 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4724 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4725
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4726 static void oscar_alias_buddy(GaimConnection *gc, const char *name, const char *alias) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4727 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4728 if (od->sess->ssi.received_data) {
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4729 char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, name);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4730 if (gname) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4731 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4732 "ssi: changing the alias for buddy %s to %s\n", name, alias);
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4733 aim_ssi_aliasbuddy(od->sess, gname, name, alias);
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4734 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4735 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4736 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4737
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4738 static void oscar_rename_group(GaimConnection *g, const char *old_group, const char *new_group, GList *members) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4739 struct oscar_data *od = (struct oscar_data *)g->proto_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4740
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4741 if (od->sess->ssi.received_data) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4742 if (aim_ssi_itemlist_finditem(od->sess->ssi.local, new_group, NULL, AIM_SSI_TYPE_GROUP)) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4743 oscar_remove_buddies(g, members, old_group);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4744 oscar_add_buddies(g, members);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4745 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4746 "ssi: moved all buddies from group %s to %s\n", old_group, new_group);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4747 } else {
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4748 aim_ssi_rename_group(od->sess, old_group, new_group);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4749 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4750 "ssi: renamed group %s to %s\n", old_group, new_group);
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4751 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4752 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4753 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4754
5968
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
4755 static gboolean gaim_ssi_rerequestdata(gpointer data) {
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
4756 aim_session_t *sess = data;
6350
22dfc953f2fb [gaim-migrate @ 6849]
Ethan Blanton <elb@pidgin.im>
parents: 6318
diff changeset
4757 aim_ssi_reqdata(sess);
5968
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
4758 return FALSE;
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
4759 }
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
4760
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4761 static int gaim_ssi_parseerr(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4762 GaimConnection *gc = sess->aux_data;
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4763 struct oscar_data *od = gc->proto_data;
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4764 va_list ap;
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4765 fu16_t reason;
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4766
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4767 va_start(ap, fr);
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4768 reason = (fu16_t)va_arg(ap, unsigned int);
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4769 va_end(ap);
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4770
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4771 gaim_debug(GAIM_DEBUG_ERROR, "oscar", "ssi: SNAC error %hu\n", reason);
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4772
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4773 if (reason == 0x0005) {
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
4774 gaim_notify_error(gc, NULL, _("Unable To Retrieve Buddy List"),
5828
3f919804eb88 [gaim-migrate @ 6259]
Nathan Walp <nwalp@pidgin.im>
parents: 5685
diff changeset
4775 _("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
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
4776 od->getblisttimer = g_timeout_add(300000, gaim_ssi_rerequestdata, od->sess);
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4777 }
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4778
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4779 /* Activate SSI */
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4780 /* Sending the enable causes other people to be able to see you, and you to see them */
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4781 /* Make sure your privacy setting/invisibility is set how you want it before this! */
5968
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
4782 gaim_debug(GAIM_DEBUG_INFO, "oscar", "ssi: activating server-stored buddy list\n");
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4783 aim_ssi_enable(od->sess);
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4784
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4785 return 1;
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4786 }
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4787
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4788 static int gaim_ssi_parserights(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4789 GaimConnection *gc = sess->aux_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4790 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4791 int numtypes, i;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4792 fu16_t *maxitems;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4793 va_list ap;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4794
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4795 va_start(ap, fr);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4796 numtypes = va_arg(ap, int);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4797 maxitems = va_arg(ap, fu16_t *);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4798 va_end(ap);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4799
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4800 gaim_debug(GAIM_DEBUG_MISC, "oscar", "ssi rights:");
5211
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
4801
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4802 for (i=0; i<numtypes; i++)
5211
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
4803 gaim_debug(GAIM_DEBUG_MISC, NULL, " max type 0x%04x=%hd,",
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
4804 i, maxitems[i]);
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
4805
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
4806 gaim_debug(GAIM_DEBUG_MISC, NULL, "\n");
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4807
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4808 if (numtypes >= 0)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4809 od->rights.maxbuddies = maxitems[0];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4810 if (numtypes >= 1)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4811 od->rights.maxgroups = maxitems[1];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4812 if (numtypes >= 2)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4813 od->rights.maxpermits = maxitems[2];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4814 if (numtypes >= 3)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4815 od->rights.maxdenies = maxitems[3];
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4816
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4817 return 1;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4818 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4819
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4820 static int gaim_ssi_parselist(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4821 GaimConnection *gc = sess->aux_data;
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4822 GaimAccount *account = gaim_connection_get_account(gc);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4823 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4824 struct aim_ssi_item *curitem;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4825 int tmp;
4778
9023518bb545 [gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents: 4776
diff changeset
4826 gboolean export = FALSE;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4827 /* XXX - use these?
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4828 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4829
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4830 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4831 fmtver = (fu16_t)va_arg(ap, int);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4832 numitems = (fu16_t)va_arg(ap, int);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4833 items = va_arg(ap, struct aim_ssi_item);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4834 timestamp = va_arg(ap, fu32_t);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4835 va_end(ap); */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4836
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4837 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4838 "ssi: syncing local list and server list\n");
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4839
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4840 /* Clean the buddy list */
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4841 aim_ssi_cleanlist(sess);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4842
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4843 /* Add from server list to local list */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4844 for (curitem=sess->ssi.local; curitem; curitem=curitem->next) {
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4845 switch (curitem->type) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4846 case 0x0000: { /* Buddy */
4251
7d62db57d86a [gaim-migrate @ 4501]
Mark Doliner <markdoliner@pidgin.im>
parents: 4249
diff changeset
4847 if (curitem->name) {
4292
249d89e1b14c [gaim-migrate @ 4545]
Mark Doliner <markdoliner@pidgin.im>
parents: 4282
diff changeset
4848 char *gname = aim_ssi_itemlist_findparentname(sess->ssi.local, curitem->name);
4458
f4d2daa33ea5 [gaim-migrate @ 4733]
Trogdor
parents: 4452
diff changeset
4849 char *gname_utf8 = gaim_try_conv_to_utf8(gname);
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
4850 char *alias = aim_ssi_getalias(sess->ssi.local, gname, curitem->name);
4458
f4d2daa33ea5 [gaim-migrate @ 4733]
Trogdor
parents: 4452
diff changeset
4851 char *alias_utf8 = gaim_try_conv_to_utf8(alias);
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4852 struct buddy *buddy = gaim_find_buddy(gc->account, curitem->name);
4458
f4d2daa33ea5 [gaim-migrate @ 4733]
Trogdor
parents: 4452
diff changeset
4853 /* Should gname be freed here? -- elb */
4754
216cd548ad68 [gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents: 4744
diff changeset
4854 /* Not with the current code, but that might be cleaner -- med */
4458
f4d2daa33ea5 [gaim-migrate @ 4733]
Trogdor
parents: 4452
diff changeset
4855 free(alias);
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
4856 if (buddy) {
4292
249d89e1b14c [gaim-migrate @ 4545]
Mark Doliner <markdoliner@pidgin.im>
parents: 4282
diff changeset
4857 /* Get server stored alias */
4705
cc6029a0379c [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
4858 if (alias_utf8) {
cc6029a0379c [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
4859 g_free(buddy->alias);
cc6029a0379c [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
4860 buddy->alias = g_strdup(alias_utf8);
cc6029a0379c [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
4861 }
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
4862 } else {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4863 struct group *g;
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4864 buddy = gaim_buddy_new(gc->account, curitem->name, alias_utf8);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
4865
4754
216cd548ad68 [gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents: 4744
diff changeset
4866 if (!(g = gaim_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4867 g = gaim_group_new(gname_utf8 ? gname_utf8 : _("Orphans"));
4754
216cd548ad68 [gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents: 4744
diff changeset
4868 gaim_blist_add_group(g, NULL);
216cd548ad68 [gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents: 4744
diff changeset
4869 }
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
4870
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4871 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4872 "ssi: adding buddy %s to group %s to local list\n", curitem->name, gname_utf8 ? gname_utf8 : _("Orphans"));
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4873 gaim_blist_add_buddy(buddy, g, NULL);
4778
9023518bb545 [gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents: 4776
diff changeset
4874 export = TRUE;
4251
7d62db57d86a [gaim-migrate @ 4501]
Mark Doliner <markdoliner@pidgin.im>
parents: 4249
diff changeset
4875 }
4458
f4d2daa33ea5 [gaim-migrate @ 4733]
Trogdor
parents: 4452
diff changeset
4876 free(gname_utf8);
f4d2daa33ea5 [gaim-migrate @ 4733]
Trogdor
parents: 4452
diff changeset
4877 free(alias_utf8);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4878 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4879 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4880
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4881 case 0x0001: { /* Group */
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
4882 /* Shouldn't add empty groups */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4883 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4884
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4885 case 0x0002: { /* Permit buddy */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4886 if (curitem->name) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4887 /* if (!find_permdeny_by_name(gc->permit, curitem->name)) { AAA */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4888 GSList *list;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4889 for (list=account->permit; (list && aim_sncmp(curitem->name, list->data)); list=list->next);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4890 if (!list) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4891 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4892 "ssi: adding permit buddy %s to local list\n", curitem->name);
6400
fc73d6446a5b [gaim-migrate @ 6905]
Christian Hammond <chipx86@chipx86.com>
parents: 6378
diff changeset
4893 gaim_privacy_permit_add(account, curitem->name, TRUE);
4778
9023518bb545 [gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents: 4776
diff changeset
4894 export = TRUE;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4895 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4896 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4897 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4898
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4899 case 0x0003: { /* Deny buddy */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4900 if (curitem->name) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4901 GSList *list;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4902 for (list=account->deny; (list && aim_sncmp(curitem->name, list->data)); list=list->next);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4903 if (!list) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4904 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4905 "ssi: adding deny buddy %s to local list\n", curitem->name);
6400
fc73d6446a5b [gaim-migrate @ 6905]
Christian Hammond <chipx86@chipx86.com>
parents: 6378
diff changeset
4906 gaim_privacy_deny_add(account, curitem->name, TRUE);
4778
9023518bb545 [gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents: 4776
diff changeset
4907 export = TRUE;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4908 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4909 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4910 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4911
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4912 case 0x0004: { /* Permit/deny setting */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4913 if (curitem->data) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4914 fu8_t permdeny;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4915 if ((permdeny = aim_ssi_getpermdeny(sess->ssi.local)) && (permdeny != account->perm_deny)) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4916 gaim_debug(GAIM_DEBUG_INFO, "oscar",
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4917 "ssi: changing permdeny from %d to %hhu\n", account->perm_deny, permdeny);
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4918 account->perm_deny = permdeny;
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4919 if (od->icq && account->perm_deny == 0x03) {
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4920 serv_set_away(gc, "Invisible", "");
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4921 }
4778
9023518bb545 [gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents: 4776
diff changeset
4922 export = TRUE;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4923 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4924 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4925 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4926
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4927 case 0x0005: { /* Presence setting */
3109
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
4928 /* We don't want to change Gaim's setting because it applies to all accounts */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4929 } break;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4930 } /* End of switch on curitem->type */
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4931 } /* End of for loop */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4932
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4933 /* If changes were made, then flush buddy list to file */
4778
9023518bb545 [gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents: 4776
diff changeset
4934 if (export)
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4345
diff changeset
4935 gaim_blist_save();
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4936
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4937 { /* Add from local list to server list */
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4938 GaimBlistNode *gnode, *bnode;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4939 struct group *group;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4940 struct buddy *buddy;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4941 struct gaim_buddy_list *blist;
3017
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
4942 GSList *cur;
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
4943
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4944 /* Buddies */
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4945 if ((blist = gaim_get_blist()))
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4946 for (gnode = blist->root; gnode; gnode = gnode->next) {
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
4947 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
4948 continue;
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4949 group = (struct group *)gnode;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4950 for (bnode = gnode->child; bnode; bnode = bnode->next) {
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
4951 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
4952 continue;
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4953 buddy = (struct buddy *)bnode;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4954 if (buddy->account == gc->account) {
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4955 gchar *servernick = gaim_buddy_get_setting(buddy, "servernick");
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4956 if (servernick) {
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4957 serv_got_alias(gc, buddy->name, servernick);
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4958 g_free(servernick);
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4959 }
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4960 if (aim_ssi_itemlist_exists(sess->ssi.local, buddy->name)) {
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4961 /* Store local alias on server */
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4962 char *alias = aim_ssi_getalias(sess->ssi.local, group->name, buddy->name);
4783
5f864446c439 [gaim-migrate @ 5103]
Mark Doliner <markdoliner@pidgin.im>
parents: 4782
diff changeset
4963 if (!alias && buddy->alias && strlen(buddy->alias))
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4964 aim_ssi_aliasbuddy(sess, group->name, buddy->name, buddy->alias);
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4965 free(alias);
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4966 } else {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4967 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4968 "ssi: adding buddy %s from local list to server list\n", buddy->name);
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4969 aim_ssi_addbuddy(sess, buddy->name, group->name, gaim_get_buddy_alias_only(buddy), NULL, NULL, 0);
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4970 }
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4345
diff changeset
4971 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4972 }
4292
249d89e1b14c [gaim-migrate @ 4545]
Mark Doliner <markdoliner@pidgin.im>
parents: 4282
diff changeset
4973 }
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4974 /* Permit list */
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4975 if (gc->account->permit) {
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4976 for (cur=gc->account->permit; cur; cur=cur->next)
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4977 if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_PERMIT)) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4978 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4979 "ssi: adding permit %s from local list to server list\n", (char *)cur->data);
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4980 aim_ssi_addpermit(sess, cur->data);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4981 }
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4982 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4983
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4984 /* Deny list */
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4985 if (gc->account->deny) {
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4986 for (cur=gc->account->deny; cur; cur=cur->next)
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4987 if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_DENY)) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4988 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4989 "ssi: adding deny %s from local list to server list\n", (char *)cur->data);
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4990 aim_ssi_adddeny(sess, cur->data);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4991 }
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4992 }
3109
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
4993 /* Presence settings (idle time visibility) */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4994 if ((tmp = aim_ssi_getpresence(sess->ssi.local)) != 0xFFFFFFFF)
5631
7f510b22ccf5 [gaim-migrate @ 6038]
Nathan Walp <nwalp@pidgin.im>
parents: 5630
diff changeset
4995 if (!(tmp & 0x400))
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4996 aim_ssi_setpresence(sess, tmp | 0x400);
4778
9023518bb545 [gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents: 4776
diff changeset
4997 } /* end adding buddies from local list to server list */
9023518bb545 [gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents: 4776
diff changeset
4998
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4999 /* Set our ICQ status */
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
5000 if (od->icq && !gc->away) {
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
5001 aim_setextstatus(sess, AIM_ICQ_STATE_NORMAL);
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
5002 }
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
5003
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
5004 /* Activate SSI */
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
5005 /* Sending the enable causes other people to be able to see you, and you to see them */
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
5006 /* Make sure your privacy setting/invisibility is set how you want it before this! */
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5007 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5008 "ssi: activating server-stored buddy list\n");
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5009 aim_ssi_enable(sess);
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
5010
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5011 return 1;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5012 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5013
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5014 static int gaim_ssi_parseack(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5015 GaimConnection *gc = sess->aux_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5016 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5017 struct aim_ssi_tmp *retval;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5018
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5019 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5020 retval = va_arg(ap, struct aim_ssi_tmp *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5021 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5022
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5023 while (retval) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5024 gaim_debug(GAIM_DEBUG_MISC, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5025 "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
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5026
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5027 if (retval->ack != 0xffff)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5028 switch (retval->ack) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5029 case 0x0000: { /* added successfully */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5030 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5031
4829
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
5032 case 0x000c: { /* you are over the limit, the cheat is to the limit, come on fhqwhgads */
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
5033 gchar *buf;
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
5034 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
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5035 gaim_notify_error(gc, NULL, _("Unable To Add"), buf);
4829
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
5036 g_free(buf);
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
5037 }
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
5038
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5039 case 0x000e: { /* contact requires authorization */
4828
a7a331159e7d [gaim-migrate @ 5153]
Mark Doliner <markdoliner@pidgin.im>
parents: 4827
diff changeset
5040 if ((retval->action == AIM_CB_SSI_ADD) && (retval->name))
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5041 gaim_auth_sendrequest(gc, retval->name);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5042 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5043
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5044 default: { /* La la la */
5197
ab4d919050d7 [gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents: 5167
diff changeset
5045 gchar *buf;
5402
72ff435414e1 [gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents: 5388
diff changeset
5046 gaim_debug(GAIM_DEBUG_ERROR, "oscar", "ssi: Action 0x%04hx was unsuccessful with error 0x%04hx\n", retval->action, retval->ack);
72ff435414e1 [gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents: 5388
diff changeset
5047 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
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5048 gaim_notify_error(gc, NULL, _("Unable To Add"), buf);
5197
ab4d919050d7 [gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents: 5167
diff changeset
5049 g_free(buf);
5402
72ff435414e1 [gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents: 5388
diff changeset
5050 /* XXX - Should remove buddy from local list */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5051 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5052 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5053
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5054 retval = retval->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5055 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5056
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5057 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5058 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5059
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5060 static int gaim_ssi_authgiven(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5061 GaimConnection *gc = sess->aux_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5062 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5063 char *sn, *msg;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5064 gchar *dialog_msg, *nombre;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5065 struct name_data *data;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5066 struct buddy *buddy;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5067
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5068 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5069 sn = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5070 msg = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5071 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5072
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5073 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5074 "ssi: %s has given you permission to add him to your buddy list\n", sn);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5075
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5076 buddy = gaim_find_buddy(gc->account, sn);
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5077 if (buddy && (gaim_get_buddy_alias_only(buddy)))
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5078 nombre = g_strdup_printf("%s (%s)", sn, gaim_get_buddy_alias_only(buddy));
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5079 else
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5080 nombre = g_strdup(sn);
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5081
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5082 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
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5083 data = g_new(struct name_data, 1);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5084 data->gc = gc;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5085 data->name = g_strdup(sn);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5086 data->nick = NULL;
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5087
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5088 gaim_request_yes_no(gc, NULL, _("Authorization Given"), dialog_msg,
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5089 0, data,
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5090 G_CALLBACK(gaim_icq_contactadd),
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
5091 G_CALLBACK(oscar_free_name_data));
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5092
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5093 g_free(dialog_msg);
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5094 g_free(nombre);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5095
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5096 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5097 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5098
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5099 static int gaim_ssi_authrequest(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5100 GaimConnection *gc = sess->aux_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5101 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5102 char *sn, *msg;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5103 gchar *dialog_msg, *nombre;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5104 struct name_data *data;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5105 struct buddy *buddy;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5106
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5107 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5108 sn = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5109 msg = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5110 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5111
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5112 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5113 "ssi: received authorization request from %s\n", sn);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5114
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5115 buddy = gaim_find_buddy(gc->account, sn);
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5116 if (buddy && (gaim_get_buddy_alias_only(buddy)))
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5117 nombre = g_strdup_printf("%s (%s)", sn, gaim_get_buddy_alias_only(buddy));
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5118 else
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5119 nombre = g_strdup(sn);
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5120
4337
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
5121 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
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5122 data = g_new(struct name_data, 1);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5123 data->gc = gc;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5124 data->name = g_strdup(sn);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5125 data->nick = NULL;
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5126
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5127 gaim_request_action(gc, NULL, _("Authorization Request"), dialog_msg,
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5128 0, data, 2,
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5129 _("Authorize"), G_CALLBACK(gaim_auth_grant),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5130 _("Deny"), G_CALLBACK(gaim_auth_dontgrant_msgprompt));
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5131
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5132 g_free(dialog_msg);
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5133 g_free(nombre);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5134
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5135 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5136 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5137
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5138 static int gaim_ssi_authreply(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5139 GaimConnection *gc = sess->aux_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5140 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5141 char *sn, *msg;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5142 gchar *dialog_msg, *nombre;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5143 fu8_t reply;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5144 struct buddy *buddy;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5145
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5146 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5147 sn = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5148 reply = (fu8_t)va_arg(ap, int);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5149 msg = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5150 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5151
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5152 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5153 "ssi: received authorization reply from %s. Reply is 0x%04hhx\n", sn, reply);
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5154
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5155 buddy = gaim_find_buddy(gc->account, sn);
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5156 if (buddy && (gaim_get_buddy_alias_only(buddy)))
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5157 nombre = g_strdup_printf("%s (%s)", sn, gaim_get_buddy_alias_only(buddy));
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5158 else
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5159 nombre = g_strdup(sn);
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5160
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5161 if (reply) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5162 /* Granted */
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5163 dialog_msg = g_strdup_printf(_("The user %s has granted your request to add them to your contact list."), nombre);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5164 gaim_notify_info(gc, NULL, _("Authorization Granted"), dialog_msg);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5165 } else {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5166 /* Denied */
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5167 dialog_msg = g_strdup_printf(_("The user %s has denied your request to add them to your contact list for the following reason:\n%s"), nombre, msg ? msg : _("No reason given."));
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5168 gaim_notify_info(gc, NULL, _("Authorization Denied"), dialog_msg);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5169 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5170 g_free(dialog_msg);
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5171 g_free(nombre);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5172
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5173 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5174 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5175
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5176 static int gaim_ssi_gotadded(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5177 GaimConnection *gc = sess->aux_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5178 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5179 char *sn;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
5180 struct buddy *buddy;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5181
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5182 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5183 sn = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5184 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5185
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5186 buddy = gaim_find_buddy(gc->account, sn);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5187 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5188 "ssi: %s added you to their buddy list\n", sn);
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5189 show_got_added(gc, NULL, sn, (buddy ? gaim_get_buddy_alias_only(buddy) : NULL), NULL);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5190
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5191 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5192 }
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5193 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5194
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5195 static GList *oscar_chat_info(GaimConnection *gc) {
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
5196 GList *m = NULL;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
5197 struct proto_chat_entry *pce;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
5198
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
5199 pce = g_new0(struct proto_chat_entry, 1);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
5200 pce->label = _("Join what group:");
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5201 pce->identifier = "room";
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
5202 m = g_list_append(m, pce);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
5203
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
5204 pce = g_new0(struct proto_chat_entry, 1);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
5205 pce->label = _("Exchange:");
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5206 pce->identifier = "exchange";
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
5207 pce->is_int = TRUE;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
5208 pce->min = 4;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
5209 pce->max = 20;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
5210 m = g_list_append(m, pce);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
5211
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
5212 return m;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
5213 }
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
5214
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5215 static void oscar_join_chat(GaimConnection *g, GHashTable *data) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5216 struct oscar_data *od = (struct oscar_data *)g->proto_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5217 aim_conn_t *cur;
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5218 char *name, *exchange;
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5219
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5220 name = g_hash_table_lookup(data, "room");
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5221 exchange = g_hash_table_lookup(data, "exchange");
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
5222
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5223 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5224 "Attempting to join chat room %s.\n", name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5225 if ((cur = aim_getconn_type(od->sess, AIM_CONN_TYPE_CHATNAV))) {
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5226 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5227 "chatnav exists, creating room\n");
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5228 aim_chatnav_createroom(od->sess, cur, name, atoi(exchange));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5229 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5230 /* this gets tricky */
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
5231 struct create_room *cr = g_new0(struct create_room, 1);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5232 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5233 "chatnav does not exist, opening chatnav\n");
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
5234 cr->exchange = atoi(exchange);
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
5235 cr->name = g_strdup(name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5236 od->create_rooms = g_slist_append(od->create_rooms, cr);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5237 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_CHATNAV);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5238 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5239 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5240
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5241 static void oscar_chat_invite(GaimConnection *g, int id, const char *message, const char *name) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5242 struct oscar_data *od = (struct oscar_data *)g->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5243 struct chat_connection *ccon = find_oscar_chat(g, id);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5244
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5245 if (!ccon)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5246 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5247
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5248 aim_chat_invite(od->sess, od->conn, name, message ? message : "",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5249 ccon->exchange, ccon->name, 0x0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5250 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5251
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5252 static void oscar_chat_leave(GaimConnection *g, int id) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5253 struct oscar_data *od = g ? (struct oscar_data *)g->proto_data : NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5254 GSList *bcs = g->buddy_chats;
5679
943eb70954b6 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
5255 GaimConversation *b = NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5256 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5257 int count = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5258
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5259 while (bcs) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5260 count++;
5679
943eb70954b6 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
5261 b = (GaimConversation *)bcs->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
5262 if (id == gaim_chat_get_id(GAIM_CHAT(b)))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5263 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5264 bcs = bcs->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5265 b = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5266 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5267
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5268 if (!b)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5269 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5270
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5271 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5272 "Attempting to leave room %s (currently in %d rooms)\n", b->name, count);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5273
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
5274 c = find_oscar_chat(g, gaim_chat_get_id(GAIM_CHAT(b)));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5275 if (c != NULL) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5276 if (od)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5277 od->oscar_chats = g_slist_remove(od->oscar_chats, c);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5278 if (c->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
5279 gaim_input_remove(c->inpa);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5280 if (g && od->sess)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5281 aim_conn_kill(od->sess, &c->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5282 g_free(c->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5283 g_free(c->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5284 g_free(c);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5285 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5286 /* we do this because with Oscar it doesn't tell us we left */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
5287 serv_got_chat_left(g, gaim_chat_get_id(GAIM_CHAT(b)));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5288 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5289
6059
9934c862ca14 [gaim-migrate @ 6509]
John Silvestri <john.silvestri@gmail.com>
parents: 6053
diff changeset
5290 static int oscar_chat_send(GaimConnection *g, int id, const char *message) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5291 struct oscar_data *od = (struct oscar_data *)g->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5292 GSList *bcs = g->buddy_chats;
5679
943eb70954b6 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
5293 GaimConversation *b = NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5294 struct chat_connection *c = NULL;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5295 char *buf, *buf2;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5296 int i, j;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5297
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5298 while (bcs) {
5679
943eb70954b6 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
5299 b = (GaimConversation *)bcs->data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
5300 if (id == gaim_chat_get_id(GAIM_CHAT(b)))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5301 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5302 bcs = bcs->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5303 b = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5304 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5305 if (!b)
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5306 return -EINVAL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5307
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5308 bcs = od->oscar_chats;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5309 while (bcs) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5310 c = (struct chat_connection *)bcs->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5311 if (b == c->cnv)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5312 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5313 bcs = bcs->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5314 c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5315 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5316 if (!c)
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5317 return -EINVAL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5318
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5319 buf = g_malloc(strlen(message) * 4 + 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5320 for (i = 0, j = 0; i < strlen(message); i++) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5321 if (message[i] == '\n') {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5322 buf[j++] = '<';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5323 buf[j++] = 'B';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5324 buf[j++] = 'R';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5325 buf[j++] = '>';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5326 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5327 buf[j++] = message[i];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5328 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5329 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5330 buf[j] = '\0';
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5331
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5332 if (strlen(buf) > c->maxlen)
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5333 return -E2BIG;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5334
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5335 buf2 = strip_html(buf);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5336 if (strlen(buf2) > c->maxvis) {
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5337 g_free(buf2);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5338 return -E2BIG;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5339 }
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5340 g_free(buf2);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5341
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5342 aim_chat_send_im(od->sess, c->conn, 0, buf, strlen(buf));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5343 g_free(buf);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5344 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5345 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5346
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5347 static const char *oscar_list_icon(GaimAccount *a, struct buddy *b) {
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5348 if (!b || (b && b->name && b->name[0] == '+')) {
5646
0aa637549d87 [gaim-migrate @ 6060]
Christian Hammond <chipx86@chipx86.com>
parents: 5638
diff changeset
5349 if (a != NULL && isdigit(*gaim_account_get_username(a)))
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5350 return "icq";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5351 else
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5352 return "aim";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5353 }
5646
0aa637549d87 [gaim-migrate @ 6060]
Christian Hammond <chipx86@chipx86.com>
parents: 5638
diff changeset
5354
0aa637549d87 [gaim-migrate @ 6060]
Christian Hammond <chipx86@chipx86.com>
parents: 5638
diff changeset
5355 if (b != NULL && isdigit(b->name[0]))
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5356 return "icq";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5357 return "aim";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5358 }
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5359
4690
e30dbd5b361f [gaim-migrate @ 5001]
Nathan Walp <nwalp@pidgin.im>
parents: 4687
diff changeset
5360 static void oscar_list_emblems(struct buddy *b, char **se, char **sw, char **nw, char **ne)
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5361 {
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5362 char *emblems[4] = {NULL,NULL,NULL,NULL};
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5363 int i = 0;
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5364
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5365 if (!GAIM_BUDDY_IS_ONLINE(b)) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5366 GaimAccount *account;
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5367 GaimConnection *gc;
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5368 struct oscar_data *od;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5369 char *gname;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5370 if ((b->name) && (account = b->account) && (gc = account->gc) &&
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5371 (od = gc->proto_data) && (od->sess->ssi.received_data) &&
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5372 (gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name)) &&
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5373 (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name))) {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5374 emblems[i++] = "notauthorized";
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5375 } else {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5376 emblems[i++] = "offline";
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5377 }
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5378 }
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4901
diff changeset
5379
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5380 if (b->name && (b->uc & 0xffff0000) && isdigit(b->name[0])) {
4960
65bf67b7600f [gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents: 4959
diff changeset
5381 int uc = b->uc >> 16;
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5382 if (uc & AIM_ICQ_STATE_INVISIBLE)
4960
65bf67b7600f [gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents: 4959
diff changeset
5383 emblems[i++] = "invisible";
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5384 else if (uc & AIM_ICQ_STATE_CHAT)
4960
65bf67b7600f [gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents: 4959
diff changeset
5385 emblems[i++] = "freeforchat";
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5386 else if (uc & AIM_ICQ_STATE_DND)
4960
65bf67b7600f [gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents: 4959
diff changeset
5387 emblems[i++] = "dnd";
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5388 else if (uc & AIM_ICQ_STATE_OUT)
4960
65bf67b7600f [gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents: 4959
diff changeset
5389 emblems[i++] = "na";
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5390 else if (uc & AIM_ICQ_STATE_BUSY)
4960
65bf67b7600f [gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents: 4959
diff changeset
5391 emblems[i++] = "occupied";
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5392 else if (uc & AIM_ICQ_STATE_AWAY)
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5393 emblems[i++] = "away";
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5394 } else {
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5395 if (b->uc & UC_UNAVAILABLE)
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5396 emblems[i++] = "away";
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5397 }
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5398 if (b->uc & UC_WIRELESS)
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5399 emblems[i++] = "wireless";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5400 if (b->uc & UC_AOL)
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5401 emblems[i++] = "aol";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5402 if (b->uc & UC_ADMIN)
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5403 emblems[i++] = "admin";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5404 if (b->uc & UC_AB && i < 4)
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5405 emblems[i++] = "activebuddy";
6318
494984c2ea4d [gaim-migrate @ 6817]
Mark Doliner <markdoliner@pidgin.im>
parents: 6310
diff changeset
5406 if (b->uc & UC_HIPTOP && i < 4)
494984c2ea4d [gaim-migrate @ 6817]
Mark Doliner <markdoliner@pidgin.im>
parents: 6310
diff changeset
5407 emblems[i++] = "hiptop";
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5408 /* if (b->uc & UC_UNCONFIRMED && i < 4)
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5409 emblems[i++] = "unconfirmed"; */
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5410 *se = emblems[0];
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5411 *sw = emblems[1];
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5412 *nw = emblems[2];
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5413 *ne = emblems[3];
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5414 }
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5415
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5416 static char *oscar_tooltip_text(struct buddy *b) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5417 GaimConnection *gc = b->account->gc;
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5418 struct oscar_data *od = gc->proto_data;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5419 struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, normalize(b->name));
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5420 gchar *tmp, *yay = g_strdup("");
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5421
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5422 if (GAIM_BUDDY_IS_ONLINE(b)) {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5423 if (isdigit(b->name[0])) {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5424 char *tmp, *status;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5425 status = gaim_icq_status((b->uc & 0xffff0000) >> 16);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5426 tmp = yay;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5427 yay = g_strconcat(tmp, _("<b>Status:</b> "), status, "\n", NULL);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5428 g_free(tmp);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5429 g_free(status);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5430 }
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5431
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5432 if (bi) {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5433 char *tstr = sec_to_text(time(NULL) - bi->signon +
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5434 (gc->login_time_official ? gc->login_time_official - gc->login_time : 0));
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5435 tmp = yay;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5436 yay = g_strconcat(tmp, _("<b>Logged In:</b> "), tstr, "\n", NULL);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5437 free(tmp);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5438 free(tstr);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5439
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5440 if (bi->caps) {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5441 char *caps = caps_string(bi->caps);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5442 tmp = yay;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5443 yay = g_strconcat(tmp, _("<b>Capabilities:</b> "), caps, "\n", NULL);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5444 free(tmp);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5445 }
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
5446
6292
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
5447 if (bi->availmsg && !(b->uc & UC_UNAVAILABLE)) {
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
5448 gchar *escaped = g_markup_escape_text(bi->availmsg, strlen(bi->availmsg));
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
5449 tmp = yay;
6173
10aadfd91a4c [gaim-migrate @ 6658]
Mark Doliner <markdoliner@pidgin.im>
parents: 6115
diff changeset
5450 yay = g_strconcat(tmp, _("<b>Available:</b> "), escaped, "\n", NULL);
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
5451 free(tmp);
6173
10aadfd91a4c [gaim-migrate @ 6658]
Mark Doliner <markdoliner@pidgin.im>
parents: 6115
diff changeset
5452 g_free(escaped);
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
5453 }
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5454 }
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5455 } else {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5456 char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5457 if (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name)) {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5458 tmp = yay;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5459 yay = g_strconcat(tmp, _("<b>Status:</b> Not Authorized"), "\n", NULL);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5460 g_free(tmp);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5461 } else {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5462 tmp = yay;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5463 yay = g_strconcat(tmp, _("<b>Status:</b> Offline"), "\n", NULL);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5464 g_free(tmp);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5465 }
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5466 }
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5467
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5468 /* remove the trailing newline character */
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5469 if (yay)
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5470 yay[strlen(yay)-1] = '\0';
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5471 return yay;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5472 }
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5473
5167
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5474 static char *oscar_status_text(struct buddy *b) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5475 GaimConnection *gc = b->account->gc;
5167
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5476 struct oscar_data *od = gc->proto_data;
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5477 gchar *ret = NULL;
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5478
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5479 if ((b->uc & UC_UNAVAILABLE) || (((b->uc & 0xffff0000) >> 16) & AIM_ICQ_STATE_CHAT)) {
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5480 if (isdigit(b->name[0]))
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5481 ret = gaim_icq_status((b->uc & 0xffff0000) >> 16);
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5482 else
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5483 ret = g_strdup(_("Away"));
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
5484 } else if (GAIM_BUDDY_IS_ONLINE(b)) {
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
5485 struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, normalize(b->name));
6292
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
5486 if (bi->availmsg)
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
5487 ret = g_markup_escape_text(bi->availmsg, strlen(bi->availmsg));
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
5488 } else {
5167
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5489 char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name);
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5490 if (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name))
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5491 ret = g_strdup(_("Not Authorized"));
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5492 else
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5493 ret = g_strdup(_("Offline"));
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5494 }
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5495
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5496 return ret;
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5497 }
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5498
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
5499
5844
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
5500 static int oscar_icon_req(aim_session_t *sess, aim_frame_t *fr, ...) {
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
5501 GaimConnection *gc = sess->aux_data;
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
5502 struct oscar_data *od = gc->proto_data;
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5503 va_list ap;
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
5504 fu16_t type;
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5505 fu8_t flags = 0, length = 0;
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5506 char *md5 = NULL;
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5507
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
5508 va_start(ap, fr);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
5509 type = va_arg(ap, int);
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5510
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5511 switch(type) {
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5512 case 0x0000:
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5513 case 0x0001: {
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5514 flags = va_arg(ap, int);
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5515 length = va_arg(ap, int);
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5516 md5 = va_arg(ap, char *);
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5517
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5518 if (flags == 0x41) {
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5519 if (!aim_getconn_type(od->sess, AIM_CONN_TYPE_ICON) && !od->iconconnecting) {
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5520 od->iconconnecting = TRUE;
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5521 od->set_icon = TRUE;
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5522 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_ICON);
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5523 } else {
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
5524 struct stat st;
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
5525 const char *iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc));
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
5526 if (iconfile == NULL) {
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
5527 /* Set an empty icon, or something */
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
5528 } else if (!stat(iconfile, &st)) {
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
5529 char *buf = g_malloc(st.st_size);
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
5530 FILE *file = fopen(iconfile, "rb");
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
5531 if (file) {
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
5532 fread(buf, 1, st.st_size, file);
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
5533 fclose(file);
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
5534 gaim_debug(GAIM_DEBUG_INFO, "oscar",
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
5535 "Uploading icon to icon server\n");
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
5536 aim_icon_upload(od->sess, buf, st.st_size);
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5537 } else
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5538 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
5539 "Can't open buddy icon file!\n");
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
5540 g_free(buf);
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
5541 } else {
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
5542 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
5543 "Can't stat buddy icon file!\n");
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5544 }
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5545 }
5893
87598b0d62de [gaim-migrate @ 6325]
Sean Egan <seanegan@pidgin.im>
parents: 5892
diff changeset
5546 } else if (flags == 0x81)
87598b0d62de [gaim-migrate @ 6325]
Sean Egan <seanegan@pidgin.im>
parents: 5892
diff changeset
5547 aim_ssi_seticon(od->sess, md5, length);
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5548 } break;
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5549
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5550 case 0x0002: { /* We just set an "available" message? */
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5551 } break;
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5552 }
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5553
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
5554 va_end(ap);
5844
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
5555
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
5556 return 0;
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
5557 }
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5558
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
5559 /*
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5560 * We have just established a socket with the other dude, so set up some handlers.
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
5561 */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5562 static int gaim_odc_initiate(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5563 GaimConnection *gc = sess->aux_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5564 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
5679
943eb70954b6 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
5565 GaimConversation *cnv;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5566 struct direct_im *dim;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5567 char buf[256];
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5568 char *sn;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5569 va_list ap;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5570 aim_conn_t *newconn, *listenerconn;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5571
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5572 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5573 newconn = va_arg(ap, aim_conn_t *);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5574 listenerconn = va_arg(ap, aim_conn_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5575 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5576
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5577 aim_conn_close(listenerconn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5578 aim_conn_kill(sess, &listenerconn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5579
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5580 sn = g_strdup(aim_odc_getsn(newconn));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5581
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5582 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5583 "DirectIM: initiate success to %s\n", sn);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5584 dim = find_direct_im(od, sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5585
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
5586 if (!(cnv = gaim_find_conversation(sn)))
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
5587 cnv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, sn);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
5588 gaim_input_remove(dim->watcher);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5589 dim->conn = newconn;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5590 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, oscar_callback, dim->conn);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5591 dim->connected = TRUE;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5592 g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5593 g_free(sn);
6621
2a18ef3e5224 [gaim-migrate @ 7145]
Robert McQueen <robot101@debian.org>
parents: 6498
diff changeset
5594 gaim_conversation_write(cnv, NULL, buf, -1, GAIM_MESSAGE_SYSTEM, time(NULL));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5595
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5596 aim_conn_addhandler(sess, newconn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING, gaim_odc_incoming, 0);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5597 aim_conn_addhandler(sess, newconn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING, gaim_odc_typing, 0);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5598 aim_conn_addhandler(sess, newconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_IMAGETRANSFER, gaim_update_ui, 0);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5599
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5600 return 1;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5601 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5602
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5603 static int gaim_update_ui(aim_session_t *sess, aim_frame_t *fr, ...) {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5604 va_list ap;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5605 char *sn;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5606 double percent;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5607 GaimConnection *gc = sess->aux_data;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5608 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
5679
943eb70954b6 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
5609 GaimConversation *c;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5610 struct direct_im *dim;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5611
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5612 va_start(ap, fr);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5613 sn = va_arg(ap, char *);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5614 percent = va_arg(ap, double);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5615 va_end(ap);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5616
2994
72d79fc3eeaa [gaim-migrate @ 3007]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
5617 if (!(dim = find_direct_im(od, sn)))
72d79fc3eeaa [gaim-migrate @ 3007]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
5618 return 1;
3059
bd4d661482f5 [gaim-migrate @ 3073]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3048
diff changeset
5619 if (dim->watcher) {
bd4d661482f5 [gaim-migrate @ 3073]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3048
diff changeset
5620 gaim_input_remove(dim->watcher); /* Otherwise, the callback will callback */
bd4d661482f5 [gaim-migrate @ 3073]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3048
diff changeset
5621 dim->watcher = 0;
bd4d661482f5 [gaim-migrate @ 3073]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3048
diff changeset
5622 }
3044
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
5623 while (gtk_events_pending())
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
5624 gtk_main_iteration();
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
5625
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
5626 if ((c = gaim_find_conversation(sn)))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
5627 gaim_conversation_update_progress(c, percent);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5628 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5629 oscar_callback, dim->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5630
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5631 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5632 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5633
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5634 static int gaim_odc_incoming(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5635 GaimConnection *gc = sess->aux_data;
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5636 int imflags = 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5637 va_list ap;
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5638 char *sn, *msg;
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5639 int len, encoding, isawaymsg;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5640
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5641 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5642 sn = va_arg(ap, char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5643 msg = va_arg(ap, char *);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5644 len = va_arg(ap, int);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
5645 encoding = va_arg(ap, int);
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5646 isawaymsg = va_arg(ap, int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5647 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5648
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5649 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5650 "Got DirectIM message from %s\n", sn);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5651
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5652 if (isawaymsg)
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5653 imflags |= IM_FLAG_AWAY;
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5654
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5655 /* XXX - I imagine Paco-Paco will want to do some voodoo with the encoding here */
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5656 serv_got_im(gc, sn, msg, imflags, time(NULL), len);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5657
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5658 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5659 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5660
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5661 static int gaim_odc_typing(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5662 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5663 char *sn;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5664 int typing;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5665 GaimConnection *gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5666
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5667 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5668 sn = va_arg(ap, char *);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5669 typing = va_arg(ap, int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5670 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5671
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5672 if (typing == 0x0002) {
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5673 /* I had to leave this. It's just too funny. It reminds me of my sister. */
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5674 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5675 "ohmigod! %s has started typing (DirectIM). He's going to send you a message! *squeal*\n", sn);
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
5676 serv_got_typing(gc, sn, 0, GAIM_TYPING);
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5677 } else if (typing == 0x0001)
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
5678 serv_got_typing(gc, sn, 0, GAIM_TYPED);
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5679 else
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
5680 serv_got_typing_stopped(gc, sn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5681 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5682 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5683
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5684 struct ask_do_dir_im {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5685 char *who;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5686 GaimConnection *gc;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5687 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5688
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
5689 static void oscar_cancel_direct_im(struct ask_do_dir_im *data) {
5136
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
5690 g_free(data->who);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5691 g_free(data);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5692 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5693
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
5694 static void oscar_direct_im(struct ask_do_dir_im *data) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5695 GaimConnection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5696 struct oscar_data *od;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5697 struct direct_im *dim;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5698
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
5699 if (!g_list_find(gaim_connections_get_all(), gc)) {
5136
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
5700 g_free(data->who);
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5701 g_free(data);
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5702 return;
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5703 }
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5704
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5705 od = (struct oscar_data *)gc->proto_data;
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5706
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5707 dim = find_direct_im(od, data->who);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5708 if (dim) {
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5709 if (!(dim->connected)) { /* We'll free the old, unconnected dim, and start over */
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5710 od->direct_ims = g_slist_remove(od->direct_ims, dim);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5711 gaim_input_remove(dim->watcher);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5712 g_free(dim);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5713 gaim_debug(GAIM_DEBUG_INFO, "oscar",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5714 "Gave up on old direct IM, trying again\n");
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5715 } else {
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5716 gaim_notify_error(gc, NULL, "DirectIM already open.", NULL);
5136
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
5717 g_free(data->who);
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5718 g_free(data);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5719 return;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5720 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5721 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5722 dim = g_new0(struct direct_im, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5723 dim->gc = gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5724 g_snprintf(dim->name, sizeof dim->name, "%s", data->who);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5725
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5726 dim->conn = aim_odc_initiate(od->sess, data->who);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5727 if (dim->conn != NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5728 od->direct_ims = g_slist_append(od->direct_ims, dim);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
5729 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5730 oscar_callback, dim->conn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5731 aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIM_ESTABLISHED,
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5732 gaim_odc_initiate, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5733 } else {
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5734 gaim_notify_error(gc, NULL, _("Unable to open Direct IM"), NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5735 g_free(dim);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5736 }
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5737
5136
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
5738 g_free(data->who);
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5739 g_free(data);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5740 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5741
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5742 static void oscar_ask_direct_im(GaimConnection *gc, const char *who) {
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
5743 gchar *buf;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5744 struct ask_do_dir_im *data = g_new0(struct ask_do_dir_im, 1);
5136
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
5745 data->who = g_strdup(who);
2170
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
5746 data->gc = gc;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
5747 buf = g_strdup_printf(_("You have selected to open a Direct IM connection with %s."), who);
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5748
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5749 gaim_request_action(gc, NULL, buf,
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5750 _("Because this reveals your IP address, it "
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5751 "may be considered a privacy risk. Do you "
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5752 "wish to continue?"),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5753 0, data, 2,
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5754 _("Connect"), G_CALLBACK(oscar_direct_im),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
5755 _("Cancel"), G_CALLBACK(oscar_cancel_direct_im));
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
5756 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5757 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5758
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5759 static void oscar_set_permit_deny(GaimConnection *gc) {
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5760 GaimAccount *account = gaim_connection_get_account(gc);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5761 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5762 #ifdef NOSSI
4770
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5763 GSList *list, *g = gaim_blist_groups(), *g1;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5764 char buf[MAXMSGLEN];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5765 int at;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5766
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5767 switch(account->perm_deny) {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5768 case 1:
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5769 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, gaim_account_get_username(account));
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5770 break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5771 case 2:
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5772 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, gaim_account_get_username(account));
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5773 break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5774 case 3:
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5775 list = account->permit;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5776 at = 0;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5777 while (list) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5778 at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", (char *)list->data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5779 list = list->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5780 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5781 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, buf);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5782 break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5783 case 4:
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5784 list = account->deny;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5785 at = 0;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5786 while (list) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5787 at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", (char *)list->data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5788 list = list->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5789 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5790 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, buf);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5791 break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5792 case 5:
4770
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5793 g1 = g;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5794 at = 0;
4770
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5795 while (g1) {
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5796 list = gaim_blist_members((struct group *)g->data);
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5797 GSList list1 = list;
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5798 while (list1) {
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5799 struct buddy *b = list1->data;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5800 if(b->account == account)
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4345
diff changeset
5801 at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", b->name);
4770
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5802 list1 = list1->next;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
5803 }
4770
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5804 g_slist_free(list);
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5805 g1 = g1->next;
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4345
diff changeset
5806 }
4770
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5807 g_slist_free(g);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5808 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, buf);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5809 break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5810 default:
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5811 break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5812 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5813 signoff_blocked(gc);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5814 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5815 if (od->sess->ssi.received_data)
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5816 aim_ssi_setpermdeny(od->sess, account->perm_deny, 0xffffffff);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5817 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5818 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5819
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5820 static void oscar_add_permit(GaimConnection *gc, const char *who) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5821 #ifdef NOSSI
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
5822 if (gc->account->permdeny == 3)
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5823 oscar_set_permit_deny(gc);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5824 #else
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5825 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5826 gaim_debug(GAIM_DEBUG_INFO, "oscar", "ssi: About to add a permit\n");
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5827 if (od->sess->ssi.received_data)
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
5828 aim_ssi_addpermit(od->sess, who);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5829 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5830 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5831
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5832 static void oscar_add_deny(GaimConnection *gc, const char *who) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5833 #ifdef NOSSI
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
5834 if (gc->account->permdeny == 4)
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5835 oscar_set_permit_deny(gc);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5836 #else
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5837 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5838 gaim_debug(GAIM_DEBUG_INFO, "oscar", "ssi: About to add a deny\n");
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5839 if (od->sess->ssi.received_data)
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
5840 aim_ssi_adddeny(od->sess, who);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5841 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5842 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5843
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5844 static void oscar_rem_permit(GaimConnection *gc, const char *who) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5845 #ifdef NOSSI
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
5846 if (gc->account->permdeny == 3)
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5847 oscar_set_permit_deny(gc);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5848 #else
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5849 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5850 gaim_debug(GAIM_DEBUG_INFO, "oscar", "ssi: About to delete a permit\n");
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5851 if (od->sess->ssi.received_data)
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
5852 aim_ssi_delpermit(od->sess, who);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5853 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5854 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5855
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5856 static void oscar_rem_deny(GaimConnection *gc, const char *who) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5857 #ifdef NOSSI
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
5858 if (gc->account->permdeny == 4)
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5859 oscar_set_permit_deny(gc);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5860 #else
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5861 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5862 gaim_debug(GAIM_DEBUG_INFO, "oscar", "ssi: About to delete a deny\n");
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5863 if (od->sess->ssi.received_data)
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
5864 aim_ssi_deldeny(od->sess, who);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5865 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5866 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5867
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5868 static GList *oscar_away_states(GaimConnection *gc)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5869 {
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
5870 struct oscar_data *od = gc->proto_data;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
5871 GList *m = NULL;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
5872
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
5873 if (!od->icq)
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
5874 return g_list_append(m, GAIM_AWAY_CUSTOM);
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
5875
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5876 m = g_list_append(m, _("Online"));
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5877 m = g_list_append(m, _("Away"));
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5878 m = g_list_append(m, _("Do Not Disturb"));
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5879 m = g_list_append(m, _("Not Available"));
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5880 m = g_list_append(m, _("Occupied"));
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5881 m = g_list_append(m, _("Free For Chat"));
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5882 m = g_list_append(m, _("Invisible"));
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5883
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5884 return m;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5885 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5886
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5887 static GList *oscar_buddy_menu(GaimConnection *gc, const char *who) {
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5888 struct oscar_data *od = gc->proto_data;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5889 GList *m = NULL;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5890 struct proto_buddy_menu *pbm;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5891
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5892 if (od->icq) {
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5893 #if 0
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5894 pbm = g_new0(struct proto_buddy_menu, 1);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5895 pbm->label = _("Get Status Msg");
4969
7e6577f9d4b6 [gaim-migrate @ 5303]
Mark Doliner <markdoliner@pidgin.im>
parents: 4965
diff changeset
5896 pbm->callback = oscar_get_icqstatusmsg;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5897 pbm->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5898 m = g_list_append(m, pbm);
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5899 #endif
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5900 } else {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5901 struct buddy *b = gaim_find_buddy(gc->account, who);
5975
13a28ae5e87d [gaim-migrate @ 6422]
Mark Doliner <markdoliner@pidgin.im>
parents: 5968
diff changeset
5902 struct buddyinfo *bi;
13a28ae5e87d [gaim-migrate @ 6422]
Mark Doliner <markdoliner@pidgin.im>
parents: 5968
diff changeset
5903
13a28ae5e87d [gaim-migrate @ 6422]
Mark Doliner <markdoliner@pidgin.im>
parents: 5968
diff changeset
5904 if (b)
13a28ae5e87d [gaim-migrate @ 6422]
Mark Doliner <markdoliner@pidgin.im>
parents: 5968
diff changeset
5905 bi = g_hash_table_lookup(od->buddyinfo, normalize(b->name));
5917
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5906
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5907 if (b && bi && aim_sncmp(gaim_account_get_username(gaim_connection_get_account(gc)), who) && GAIM_BUDDY_IS_ONLINE(b)) {
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5908 if (bi->caps & AIM_CAPS_IMIMAGE) {
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5909 pbm = g_new0(struct proto_buddy_menu, 1);
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5910 pbm->label = _("Direct IM");
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5911 pbm->callback = oscar_ask_direct_im;
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5912 pbm->gc = gc;
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5913 m = g_list_append(m, pbm);
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5914 }
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5915
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5916 if (bi->caps & AIM_CAPS_SENDFILE) {
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5917 pbm = g_new0(struct proto_buddy_menu, 1);
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5918 pbm->label = _("Send File");
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5919 pbm->callback = oscar_ask_sendfile;
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5920 pbm->gc = gc;
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5921 m = g_list_append(m, pbm);
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5922 }
4826
ce211ce6a336 [gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents: 4825
diff changeset
5923 #if 0
5917
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5924 if (bi->caps & AIM_CAPS_GETFILE) {
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5925 pbm = g_new0(struct proto_buddy_menu, 1);
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5926 pbm->label = _("Get File");
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5927 pbm->callback = oscar_ask_getfile;
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5928 pbm->gc = gc;
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5929 m = g_list_append(m, pbm);
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
5930 }
4826
ce211ce6a336 [gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents: 4825
diff changeset
5931 #endif
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5932 }
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5933 }
5197
ab4d919050d7 [gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents: 5167
diff changeset
5934
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5935 if (od->sess->ssi.received_data) {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5936 char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, who);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5937 if (gname && aim_ssi_waitingforauth(od->sess->ssi.local, gname, who)) {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5938 pbm = g_new0(struct proto_buddy_menu, 1);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5939 pbm->label = _("Re-request Authorization");
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5940 pbm->callback = gaim_auth_sendrequest;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5941 pbm->gc = gc;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5942 m = g_list_append(m, pbm);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5943 }
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4901
diff changeset
5944 }
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4901
diff changeset
5945
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5946 return m;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5947 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5948
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5949 static void oscar_format_screenname(GaimConnection *gc, const char *nick) {
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5950 struct oscar_data *od = gc->proto_data;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5951 if (!aim_sncmp(gaim_account_get_username(gaim_connection_get_account(gc)), nick)) {
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5952 if (!aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH)) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5953 od->setnick = TRUE;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5954 od->newsn = g_strdup(nick);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5955 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5956 } else {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5957 aim_admin_setnick(od->sess, aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH), nick);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5958 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5959 } else {
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5960 gaim_notify_error(gc, NULL, _("The new formatting is invalid."),
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5961 _("Screenname formatting can change only capitalization and whitespace."));
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5962 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5963 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5964
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5965 static void oscar_show_format_screenname(GaimConnection *gc)
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5966 {
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
5967 gaim_request_input(gc, NULL, _("New screenname formatting:"), NULL,
6035
b245be9cbe3b [gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents: 6029
diff changeset
5968 gaim_connection_get_display_name(gc), FALSE, FALSE,
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
5969 _("OK"), G_CALLBACK(oscar_format_screenname),
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
5970 _("Cancel"), NULL,
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
5971 gc);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5972 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5973
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5974 static void oscar_confirm_account(GaimConnection *gc)
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5975 {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5976 struct oscar_data *od = gc->proto_data;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5977 aim_conn_t *conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5978
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5979 if (conn) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5980 aim_admin_reqconfirm(od->sess, conn);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5981 } else {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5982 od->conf = TRUE;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5983 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5984 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5985 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5986
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5987 static void oscar_show_email(GaimConnection *gc)
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5988 {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5989 struct oscar_data *od = gc->proto_data;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5990 aim_conn_t *conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5991
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5992 if (conn) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5993 aim_admin_getinfo(od->sess, conn, 0x11);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5994 } else {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5995 od->reqemail = TRUE;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5996 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5997 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5998 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5999
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6000 static void oscar_change_email(GaimConnection *gc, const char *email)
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
6001 {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
6002 struct oscar_data *od = gc->proto_data;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
6003 aim_conn_t *conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
6004
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
6005 if (conn) {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
6006 aim_admin_setemail(od->sess, conn, email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
6007 } else {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
6008 od->setemail = TRUE;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
6009 od->email = g_strdup(email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
6010 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
6011 }
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
6012 }
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
6013
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6014 static void oscar_show_change_email(GaimConnection *gc)
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6015 {
6035
b245be9cbe3b [gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents: 6029
diff changeset
6016 gaim_request_input(gc, NULL, _("Change Address To:"), NULL, NULL,
b245be9cbe3b [gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents: 6029
diff changeset
6017 FALSE, FALSE,
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
6018 _("OK"), G_CALLBACK(oscar_change_email),
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
6019 _("Cancel"), NULL,
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
6020 gc);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6021 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6022
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6023 static void oscar_show_awaitingauth(GaimConnection *gc)
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6024 {
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
6025 struct oscar_data *od = gc->proto_data;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6026 gchar *nombre, *text, *tmp;
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
6027 GaimBlistNode *gnode,*bnode;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6028 int num=0;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6029
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6030 text = g_strdup(_("You are awaiting authorization from the following buddies:<BR>"));
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6031
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
6032 for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
6033 struct group *group = (struct group *)gnode;
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
6034 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
6035 continue;
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
6036 for (bnode = gnode->child; bnode; bnode = bnode->next) {
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
6037 struct buddy *buddy = (struct buddy *)bnode;
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
6038 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
6039 continue;
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
6040 if (buddy->account == gc->account && aim_ssi_waitingforauth(od->sess->ssi.local, group->name, buddy->name)) {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6041 if (gaim_get_buddy_alias_only(buddy))
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6042 nombre = g_strdup_printf(" %s (%s)", buddy->name, gaim_get_buddy_alias_only(buddy));
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6043 else
4337
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
6044 nombre = g_strdup_printf(" %s", buddy->name);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6045 tmp = g_strdup_printf("%s<BR>%s", text, nombre);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6046 g_free(text);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6047 text = tmp;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6048 g_free(nombre);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6049 num++;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6050 }
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
6051 }
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6052 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6053
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6054 if (!num) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6055 tmp = g_strdup_printf("%s<BR>%s", text, _("<i>you are not waiting for authorization</i>"));
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6056 g_free(text);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6057 text = tmp;
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
6058 }
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6059
4959
f59fe1f96ffd [gaim-migrate @ 5293]
Lumiere
parents: 4952
diff changeset
6060 tmp = g_strdup_printf(_("%s<BR><BR>You can re-request authorization from these buddies by right-clicking on them and clicking \"Re-request authorization.\""), text);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6061 g_free(text);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6062 text = tmp;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6063 g_show_info_text(gc, gaim_account_get_username(gaim_connection_get_account(gc)), 2, text, NULL);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6064 g_free(text);
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
6065 }
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
6066
5975
13a28ae5e87d [gaim-migrate @ 6422]
Mark Doliner <markdoliner@pidgin.im>
parents: 5968
diff changeset
6067 #if 0
5917
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6068 static void oscar_setavailmsg(GaimConnection *gc, char *text) {
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6069 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6070
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6071 aim_srv_setavailmsg(od->sess, text);
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6072 }
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6073
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6074 static void oscar_show_setavailmsg(GaimConnection *gc)
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6075 {
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6076 gaim_request_input(gc, NULL, _("Available Message:"),
6035
b245be9cbe3b [gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents: 6029
diff changeset
6077 NULL, _("Please talk to me, I'm lonely! (and single)"), TRUE, FALSE,
5917
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6078 _("OK"), G_CALLBACK(oscar_setavailmsg),
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6079 _("Cancel"), NULL,
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6080 gc);
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6081 }
5975
13a28ae5e87d [gaim-migrate @ 6422]
Mark Doliner <markdoliner@pidgin.im>
parents: 5968
diff changeset
6082 #endif
5917
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6083
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6084 static void oscar_show_chpassurl(GaimConnection *gc)
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6085 {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6086 struct oscar_data *od = gc->proto_data;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6087 gchar *substituted = gaim_strreplace(od->sess->authinfo->chpassurl, "%s", gaim_account_get_username(gaim_connection_get_account(gc)));
6465
bd201d637ff4 [gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents: 6400
diff changeset
6088 gaim_notify_uri(gc, substituted);
5517
1d7b99ac846c [gaim-migrate @ 5916]
Mark Doliner <markdoliner@pidgin.im>
parents: 5498
diff changeset
6089 g_free(substituted);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6090 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6091
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6092 static void oscar_set_icon(GaimConnection *gc, const char *iconfile)
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6093 {
5844
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
6094 struct oscar_data *od = gc->proto_data;
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
6095 aim_session_t *sess = od->sess;
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6096 FILE *file;
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6097 struct stat st;
5844
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
6098
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6099 if (iconfile == NULL) {
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6100 /* Set an empty icon, or something */
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6101 } else if (!stat(iconfile, &st)) {
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6102 char *buf = g_malloc(st.st_size);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6103 file = fopen(iconfile, "rb");
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6104 if (file) {
6052
61348856ae28 [gaim-migrate @ 6502]
Mark Doliner <markdoliner@pidgin.im>
parents: 6051
diff changeset
6105 md5_state_t *state;
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6106 char md5[16];
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6107 int len = fread(buf, 1, st.st_size, file);
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6108 fclose(file);
6052
61348856ae28 [gaim-migrate @ 6502]
Mark Doliner <markdoliner@pidgin.im>
parents: 6051
diff changeset
6109 state = g_malloc(sizeof(md5_state_t));
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6110 md5_init(state);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6111 md5_append(state, buf, len);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6112 md5_finish(state, md5);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6113 g_free(state);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6114 aim_ssi_seticon(sess, md5, 16);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6115 } else
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6116 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6117 "Can't open buddy icon file!\n");
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6118 g_free(buf);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6119 } else
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6120 gaim_debug(GAIM_DEBUG_ERROR, "oscar",
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6121 "Can't stat buddy icon file!\n");
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6122 }
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6123
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6124
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6125 static GList *oscar_actions(GaimConnection *gc)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6126 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6127 struct oscar_data *od = gc->proto_data;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6128 struct proto_actions_menu *pam;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6129 GList *m = NULL;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6130
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6131 pam = g_new0(struct proto_actions_menu, 1);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6132 pam->label = _("Set User Info");
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6133 pam->callback = show_set_info;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6134 pam->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6135 m = g_list_append(m, pam);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6136
5917
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6137 #if 0
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6138 pam = g_new0(struct proto_actions_menu, 1);
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6139 pam->label = _("Set Available Message");
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6140 pam->callback = oscar_show_setavailmsg;
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6141 pam->gc = gc;
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6142 m = g_list_append(m, pam);
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6143 #endif
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6144
5238
b2c65d7392e0 [gaim-migrate @ 5608]
Mark Doliner <markdoliner@pidgin.im>
parents: 5234
diff changeset
6145 pam = g_new0(struct proto_actions_menu, 1);
b2c65d7392e0 [gaim-migrate @ 5608]
Mark Doliner <markdoliner@pidgin.im>
parents: 5234
diff changeset
6146 pam->label = _("Change Password");
b2c65d7392e0 [gaim-migrate @ 5608]
Mark Doliner <markdoliner@pidgin.im>
parents: 5234
diff changeset
6147 pam->callback = show_change_passwd;
b2c65d7392e0 [gaim-migrate @ 5608]
Mark Doliner <markdoliner@pidgin.im>
parents: 5234
diff changeset
6148 pam->gc = gc;
b2c65d7392e0 [gaim-migrate @ 5608]
Mark Doliner <markdoliner@pidgin.im>
parents: 5234
diff changeset
6149 m = g_list_append(m, pam);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6150
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6151 if (od->sess->authinfo->chpassurl) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6152 pam = g_new0(struct proto_actions_menu, 1);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6153 pam->label = _("Change Password (URL)");
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6154 pam->callback = oscar_show_chpassurl;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6155 pam->gc = gc;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6156 m = g_list_append(m, pam);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6157 }
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6158
5238
b2c65d7392e0 [gaim-migrate @ 5608]
Mark Doliner <markdoliner@pidgin.im>
parents: 5234
diff changeset
6159 if (!od->icq) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6160 /* AIM actions */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6161 m = g_list_append(m, NULL);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6162
5917
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
6163 pam = g_new0(struct proto_actions_menu, 1);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6164 pam->label = _("Format Screenname");
5844
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
6165 pam->callback = oscar_show_format_screenname;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6166 pam->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6167 m = g_list_append(m, pam);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6168
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6169 pam = g_new0(struct proto_actions_menu, 1);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6170 pam->label = _("Confirm Account");
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6171 pam->callback = oscar_confirm_account;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6172 pam->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6173 m = g_list_append(m, pam);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6174
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6175 pam = g_new0(struct proto_actions_menu, 1);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6176 pam->label = _("Display Current Registered Address");
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6177 pam->callback = oscar_show_email;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6178 pam->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6179 m = g_list_append(m, pam);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6180
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6181 pam = g_new0(struct proto_actions_menu, 1);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6182 pam->label = _("Change Current Registered Address");
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6183 pam->callback = oscar_show_change_email;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6184 pam->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6185 m = g_list_append(m, pam);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6186 }
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6187
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6188 m = g_list_append(m, NULL);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6189
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6190 pam = g_new0(struct proto_actions_menu, 1);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6191 pam->label = _("Show Buddies Awaiting Authorization");
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6192 pam->callback = oscar_show_awaitingauth;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6193 pam->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6194 m = g_list_append(m, pam);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6195
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6196 m = g_list_append(m, NULL);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6197
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6198 pam = g_new0(struct proto_actions_menu, 1);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6199 pam->label = _("Search for Buddy by Email");
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6200 pam->callback = show_find_email;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6201 pam->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6202 m = g_list_append(m, pam);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6203
4336
35df0f5d8651 [gaim-migrate @ 4600]
Mark Doliner <markdoliner@pidgin.im>
parents: 4333
diff changeset
6204 /* pam = g_new0(struct proto_actions_menu, 1);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6205 pam->label = _("Search for Buddy by Information");
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6206 pam->callback = show_find_info;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6207 pam->gc = gc;
4336
35df0f5d8651 [gaim-migrate @ 4600]
Mark Doliner <markdoliner@pidgin.im>
parents: 4333
diff changeset
6208 m = g_list_append(m, pam); */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6209
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6210 return m;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6211 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6212
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6213 static void oscar_change_passwd(GaimConnection *gc, const char *old, const char *new)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6214 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6215 struct oscar_data *od = gc->proto_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6216
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6217 if (od->icq) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6218 aim_icq_changepasswd(od->sess, new);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6219 } else {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6220 aim_conn_t *conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6221 if (conn) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6222 aim_admin_changepasswd(od->sess, conn, new, old);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6223 } else {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6224 od->chpass = TRUE;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6225 od->oldp = g_strdup(old);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6226 od->newp = g_strdup(new);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6227 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6228 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6229 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6230 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6231
6059
9934c862ca14 [gaim-migrate @ 6509]
John Silvestri <john.silvestri@gmail.com>
parents: 6053
diff changeset
6232 static void oscar_convo_closed(GaimConnection *gc, const char *who)
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
6233 {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
6234 struct oscar_data *od = gc->proto_data;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
6235 struct direct_im *dim = find_direct_im(od, who);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
6236
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
6237 if (!dim)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
6238 return;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
6239
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
6240 od->direct_ims = g_slist_remove(od->direct_ims, dim);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
6241 gaim_input_remove(dim->watcher);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
6242 aim_conn_kill(od->sess, &dim->conn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
6243 g_free(dim);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
6244 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
6245
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6246 static GaimPluginProtocolInfo prpl_info =
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6247 {
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6248 GAIM_PROTO_OSCAR,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6249 OPT_PROTO_MAIL_CHECK | OPT_PROTO_BUDDY_ICON | OPT_PROTO_IM_IMAGE,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6250 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6251 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6252 oscar_list_icon,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6253 oscar_list_emblems,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6254 oscar_status_text,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6255 oscar_tooltip_text,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6256 oscar_away_states,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6257 oscar_actions,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6258 oscar_buddy_menu,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6259 oscar_chat_info,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6260 oscar_login,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6261 oscar_close,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6262 oscar_send_im,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6263 oscar_set_info,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6264 oscar_send_typing,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6265 oscar_get_info,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6266 oscar_set_away,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6267 oscar_get_away,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6268 oscar_set_dir,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6269 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6270 oscar_dir_search,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6271 oscar_set_idle,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6272 oscar_change_passwd,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6273 oscar_add_buddy,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6274 oscar_add_buddies,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6275 oscar_remove_buddy,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6276 oscar_remove_buddies,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6277 oscar_add_permit,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6278 oscar_add_deny,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6279 oscar_rem_permit,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6280 oscar_rem_deny,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6281 oscar_set_permit_deny,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6282 oscar_warn,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6283 oscar_join_chat,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6284 oscar_chat_invite,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6285 oscar_chat_leave,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6286 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6287 oscar_chat_send,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6288 oscar_keepalive,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6289 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6290 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6291 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6292 #ifndef NOSSI
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6293 oscar_alias_buddy,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6294 oscar_move_buddy,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6295 oscar_rename_group,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6296 #else
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6297 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6298 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6299 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6300 #endif
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6301 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6302 oscar_convo_closed,
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6303 NULL,
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6304 oscar_set_icon
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6305 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6306
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6307 static GaimPluginInfo info =
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6308 {
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6309 2, /**< api_version */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6310 GAIM_PLUGIN_PROTOCOL, /**< type */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6311 NULL, /**< ui_requirement */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6312 0, /**< flags */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6313 NULL, /**< dependencies */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6314 GAIM_PRIORITY_DEFAULT, /**< priority */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6315
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6316 "prpl-oscar", /**< id */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6317 "AIM/ICQ", /**< name */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6318 VERSION, /**< version */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6319 /** summary */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6320 N_("AIM/ICQ Protocol Plugin"),
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6321 /** description */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6322 N_("AIM/ICQ Protocol Plugin"),
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6323 NULL, /**< author */
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
6324 GAIM_WEBSITE, /**< homepage */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6325
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6326 NULL, /**< load */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6327 NULL, /**< unload */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6328 NULL, /**< destroy */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6329
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6330 NULL, /**< ui_info */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6331 &prpl_info /**< extra_info */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6332 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6333
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6334 static void
5920
963bfdefee02 [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5917
diff changeset
6335 init_plugin(GaimPlugin *plugin)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6336 {
5638
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
6337 GaimAccountOption *option;
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
6338
5685
2523e4143d74 [gaim-migrate @ 6106]
Christian Hammond <chipx86@chipx86.com>
parents: 5681
diff changeset
6339 option = gaim_account_option_string_new(_("Auth host"), "server",
5638
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
6340 "login.oscar.aol.com");
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
6341 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
6342 option);
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
6343
5685
2523e4143d74 [gaim-migrate @ 6106]
Christian Hammond <chipx86@chipx86.com>
parents: 5681
diff changeset
6344 option = gaim_account_option_int_new(_("Auth port"), "port", 5190);
5638
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
6345 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
6346 option);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6347
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
6348 my_protocol = plugin;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6349 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6350
5920
963bfdefee02 [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5917
diff changeset
6351 GAIM_INIT_PLUGIN(oscar, init_plugin, info);

mercurial