src/protocols/oscar/oscar.c

Fri, 25 Apr 2003 06:47:33 +0000

author
Christian Hammond <chipx86@chipx86.com>
date
Fri, 25 Apr 2003 06:47:33 +0000
changeset 5205
242b8aa81328
parent 5197
ab4d919050d7
child 5208
63f8248c74ed
permissions
-rw-r--r--

[gaim-migrate @ 5573]
I had a damn good commit message, but it was eaten. Let's try it again.

Announcing, Gaim Plugin API version 2.0, or GPAPIV2.0 for short.

There are lots'a cool thingies here.

Okay now, this isn't as cool as the previous message, but:

1) There's now a single entry function for all plugin types. It returns a
detailed information structure on the plugin. This removes a lot of the
ugliness from old plugins. Oh yeah, libicq wasn't converted to this, so
if you use it, well, you shouldn't have used it anyway, but now you
can't! bwahahaha. Use AIM/ICQ.

2) There are now 3 types of plugins: Standard, Loader, and Protocol
plugins.

Standard plugins are, well, standard, compiled plugins.

Loader plugins load other plugins. For example, the perl support is now
a loader plugin. It loads perl scripts. In the future, we'll have
Ruby and Python loader plugins.

Protocol plugins are, well, protocol plugins... yeah...

3) Plugins have unique IDs, so they can be referred to or automatically
updated from a plugin database in the future. Neat, huh?

4) Plugins will have dependency support in the future, and can be hidden,
so if you have, say, a logging core plugin, it won't have to show up,
but then you load the GTK+ logging plugin and it'll auto-load the core
plugin. Core/UI split plugins!

5) There will eventually be custom plugin signals and RPC of some sort, for
the core/ui split plugins.

So, okay, back up .gaimrc.

I'd like to thank my parents for their support, javabsp for helping convert
a bunch of protocol plugins, and Etan for helping convert a bunch of
standard plugins.

Have fun. If you have any problems, please let me know, but you probably
won't have anything major happen. You will have to convert your plugins,
though, and I'm not guaranteeing that all perl scripts will still work.
I'll end up changing the perl script API eventually, so I know they won't
down the road. Don't worry, though. It'll be mass cool.

faceprint wants me to just commit the damn code already. So, here we go!!!

..

..

I need a massage. From a young, cute girl. Are there any young, cute girls
in the audience? IM me plz k thx.

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>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5 * libfaim code copyright 1998, 1999 Adam Fritzler <afritz@auk.cx>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
8 * 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
9 * the Free Software Foundation; either version 2 of the License, or
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
10 * (at your option) any later version.
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 distributed in the hope that it will be useful,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
15 * GNU General Public License for more details.
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 * You should have received a copy of the GNU General Public License
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
20 *
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
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
23 #ifdef HAVE_CONFIG_H
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
24 #include <config.h>
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
25 #endif
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
26
3664
c192fe7bafd1 [gaim-migrate @ 3793]
Luke Schierer <lschiere@pidgin.im>
parents: 3660
diff changeset
27 #include <sys/types.h>
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
28 /* this must happen before sys/socket.h or freebsd won't compile */
3664
c192fe7bafd1 [gaim-migrate @ 3793]
Luke Schierer <lschiere@pidgin.im>
parents: 3660
diff changeset
29
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
30 #ifndef _WIN32
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
31 #include <netdb.h>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
32 #include <netinet/in.h>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
33 #include <arpa/inet.h>
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
34 #include <sys/socket.h>
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
35 #include <unistd.h>
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
36 #endif
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
37
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
38 #include <errno.h>
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
39 #include <ctype.h>
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
40 #include <string.h>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
41 #include <stdlib.h>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
42 #include <stdio.h>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
43 #include <time.h>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
44 #include <sys/stat.h>
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
45 #include <signal.h>
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
46
4608
c165a90c65fc [gaim-migrate @ 4896]
Nathan Walp <nwalp@pidgin.im>
parents: 4600
diff changeset
47 #include "gaim.h"
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
48 #include "multi.h"
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
49 #include "prpl.h"
4373
fb2ae2f5edd3 [gaim-migrate @ 4639]
Herman Bloggs <herman@bluedigits.com>
parents: 4366
diff changeset
50 #include "core.h"
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
51 #include "proxy.h"
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
52 #include "aim.h"
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
53
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
54 #ifdef _WIN32
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
55 #include "win32dep.h"
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
56 #endif
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
57
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
58 /* constants to identify proto_opts */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
59 #define USEROPT_AUTH 0
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
60 #define USEROPT_AUTHPORT 1
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
61
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
62 #define UC_AOL 0x02
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
63 #define UC_ADMIN 0x04
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
64 #define UC_UNCONFIRMED 0x08
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
65 #define UC_NORMAL 0x10
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
66 #define UC_AB 0x20
3079
e55c9a9cc4fc [gaim-migrate @ 3093]
Mark Doliner <markdoliner@pidgin.im>
parents: 3074
diff changeset
67 #define UC_WIRELESS 0x40
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
68
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
69 #define AIMHASHDATA "http://gaim.sourceforge.net/aim_data.php3"
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
70
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
71 static GaimPlugin *my_protocol = NULL;
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4246
diff changeset
72
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
73 /* For win32 compatability */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
74 G_MODULE_IMPORT GSList *connections;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
75 G_MODULE_IMPORT int report_idle;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
76
4811
ce0da6668339 [gaim-migrate @ 5131]
Mark Doliner <markdoliner@pidgin.im>
parents: 4807
diff changeset
77 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
78 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
79
4665
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
80 static fu8_t features_aim[] = {0x01, 0x01, 0x01, 0x02};
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
81 static fu8_t features_icq[] = {0x01, 0x06};
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 struct oscar_data {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
84 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
85 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
86
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
87 guint cnpa;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
88 guint paspa;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
89 guint emlpa;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
90 guint icopa;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
91
4823
e855589fb088 [gaim-migrate @ 5148]
Roald Dahl
parents: 4822
diff changeset
92 gboolean iconconnecting;
e855589fb088 [gaim-migrate @ 5148]
Roald Dahl
parents: 4822
diff changeset
93
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
94 GSList *create_rooms;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
95
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
96 gboolean conf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
97 gboolean reqemail;
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
98 gboolean setemail;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
99 char *email;
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
100 gboolean setnick;
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
101 char *newsn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
102 gboolean chpass;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
103 char *oldp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
104 char *newp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
105
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
106 GSList *oscar_chats;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
107 GSList *direct_ims;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
108 GSList *file_transfers;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
109 GHashTable *buddyinfo;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
110 GSList *requesticon;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
111
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
112 gboolean killme;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
113 gboolean icq;
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
114 GSList *evilhack;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
115 guint icontimer;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
116
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
117 struct {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
118 guint maxwatchers; /* max users who can watch you */
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
119 guint maxbuddies; /* max users you can watch */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
120 guint maxgroups; /* max groups in server list */
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
121 guint maxpermits; /* max users on permit list */
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
122 guint maxdenies; /* max users on deny list */
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
123 guint maxsiglen; /* max size (bytes) of profile */
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
124 guint maxawaymsglen; /* max size (bytes) of posted away message */
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
125 } rights;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
126 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
127
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
128 struct create_room {
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
129 char *name;
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
130 int exchange;
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
131 };
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
132
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
133 struct chat_connection {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
134 char *name;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
135 char *show; /* AOL did something funny to us */
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
136 fu16_t exchange;
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
137 fu16_t instance;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
138 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
139 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
140 int inpa;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
141 int id;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
142 struct gaim_connection *gc; /* i hate this. */
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
143 struct gaim_conversation *cnv; /* bah. */
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
144 int maxlen;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
145 int maxvis;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
146 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
147
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
148 struct direct_im {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
149 struct gaim_connection *gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
150 char name[80];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
151 int watcher;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
152 aim_conn_t *conn;
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
153 gboolean connected;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
154 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
155
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
156 struct ask_direct {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
157 struct gaim_connection *gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
158 char *sn;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
159 char ip[64];
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
160 fu8_t cookie[8];
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
161 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
162
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
163 /* 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
164 struct buddyinfo {
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
165 time_t signon;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
166 int caps;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
167 gboolean typingnot;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
168
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
169 unsigned long ico_len;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
170 unsigned long ico_csum;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
171 time_t ico_time;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
172 gboolean ico_need;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
173
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
174 unsigned long ico_me_len;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
175 unsigned long ico_me_csum;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
176 time_t ico_me_time;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
177 gboolean ico_informed;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
178
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
179 fu16_t iconcsumlen;
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
180 fu8_t iconcsum[30];
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
181 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
182
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
183 struct name_data {
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
184 struct gaim_connection *gc;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
185 gchar *name;
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
186 gchar *nick;
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
187 };
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
188
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
189 static char *msgerrreason[] = {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
190 N_("Invalid error"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
191 N_("Invalid SNAC"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
192 N_("Rate to host"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
193 N_("Rate to client"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
194 N_("Not logged in"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
195 N_("Service unavailable"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
196 N_("Service not defined"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
197 N_("Obsolete SNAC"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
198 N_("Not supported by host"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
199 N_("Not supported by client"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
200 N_("Refused by client"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
201 N_("Reply too big"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
202 N_("Responses lost"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
203 N_("Request denied"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
204 N_("Busted SNAC payload"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
205 N_("Insufficient rights"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
206 N_("In local permit/deny"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
207 N_("Too evil (sender)"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
208 N_("Too evil (receiver)"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
209 N_("User temporarily unavailable"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
210 N_("No match"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
211 N_("List overflow"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
212 N_("Request ambiguous"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
213 N_("Queue full"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
214 N_("Not while on AOL")
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
215 };
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
216 static int msgerrreasonlen = 25;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
217
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
218 /* All the libfaim->gaim callback functions */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
219 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
220 static int gaim_parse_login (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
221 static int gaim_handle_redirect (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
222 static int gaim_info_change (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
223 static int gaim_account_confirm (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
224 static int gaim_parse_oncoming (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
225 static int gaim_parse_offgoing (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
226 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
227 static int gaim_parse_misses (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
228 static int gaim_parse_clientauto (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
229 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
230 static int gaim_parse_motd (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
231 static int gaim_chatnav_info (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
232 static int gaim_chat_join (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
233 static int gaim_chat_leave (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
234 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
235 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
236 static int gaim_email_parseupdate(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
237 static int gaim_icon_error (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
238 static int gaim_icon_parseicon (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
239 static int gaim_parse_msgack (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
240 static int gaim_parse_ratechange (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
241 static int gaim_parse_evilnotify (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
242 static int gaim_parse_searcherror(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
243 static int gaim_parse_searchreply(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
244 static int gaim_bosrights (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
245 static int gaim_connerr (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
246 static int conninitdone_admin (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
247 static int conninitdone_bos (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
248 static int conninitdone_chatnav (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
249 static int conninitdone_chat (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
250 static int conninitdone_email (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
251 static int conninitdone_icon (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
252 static int gaim_parse_msgerr (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
253 static int gaim_parse_mtn (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
254 static int gaim_parse_locaterights(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
255 static int gaim_parse_buddyrights(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
256 static int gaim_parse_locerr (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
257 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
258 static int gaim_parse_genericerr (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
259 static int gaim_memrequest (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
260 static int gaim_selfinfo (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
261 static int gaim_offlinemsg (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
262 static int gaim_offlinemsgdone (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
263 static int gaim_icqalias (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
264 static int gaim_icqinfo (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
265 static int gaim_popup (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
266 #ifndef NOSSI
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
267 static int gaim_ssi_parseerr (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
268 static int gaim_ssi_parserights (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
269 static int gaim_ssi_parselist (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
270 static int gaim_ssi_parseack (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
271 static int gaim_ssi_authgiven (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
272 static int gaim_ssi_authrequest (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
273 static int gaim_ssi_authreply (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
274 static int gaim_ssi_gotadded (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
275 #endif
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
276
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
277 /* for DirectIM/image transfer */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
278 static int gaim_odc_initiate (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
279 static int gaim_odc_incoming (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
280 static int gaim_odc_typing (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
281 static int gaim_update_ui (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
282
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
283 /* for file transfer */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
284 static int oscar_sendfile_estblsh(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
285 static int oscar_sendfile_prompt (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
286 static int oscar_sendfile_ack (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
287 static int oscar_sendfile_done (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
288
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
289 /* for icons */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
290 static gboolean gaim_icon_timerfunc(gpointer data);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
291
5149
b873dc695388 [gaim-migrate @ 5513]
Mark Doliner <markdoliner@pidgin.im>
parents: 5146
diff changeset
292 int ill_just_write_my_own_damn_round_function(double val) {
b873dc695388 [gaim-migrate @ 5513]
Mark Doliner <markdoliner@pidgin.im>
parents: 5146
diff changeset
293 if ((val - (int)val) > 0.5)
b873dc695388 [gaim-migrate @ 5513]
Mark Doliner <markdoliner@pidgin.im>
parents: 5146
diff changeset
294 return val+1;
b873dc695388 [gaim-migrate @ 5513]
Mark Doliner <markdoliner@pidgin.im>
parents: 5146
diff changeset
295 else
b873dc695388 [gaim-migrate @ 5513]
Mark Doliner <markdoliner@pidgin.im>
parents: 5146
diff changeset
296 return val;
b873dc695388 [gaim-migrate @ 5513]
Mark Doliner <markdoliner@pidgin.im>
parents: 5146
diff changeset
297 }
b873dc695388 [gaim-migrate @ 5513]
Mark Doliner <markdoliner@pidgin.im>
parents: 5146
diff changeset
298
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
299 static void gaim_free_name_data(struct name_data *data) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
300 g_free(data->name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
301 g_free(data->nick);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
302 g_free(data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
303 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
304
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
305 static fu32_t oscar_encoding_check(const char *utf8)
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
306 {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
307 int i = 0;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
308 fu32_t encodingflag = 0;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
309
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
310 /* Determine how we can send this message. Per the warnings elsewhere
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
311 * in this file, these little checks determine the simplest encoding
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
312 * we can use for a given message send using it. */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
313 while (utf8[i]) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
314 if ((unsigned char)utf8[i] > 0x7f) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
315 /* not ASCII! */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
316 encodingflag = AIM_IMFLAGS_ISO_8859_1;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
317 break;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
318 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
319 i++;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
320 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
321 while (utf8[i]) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
322 /* ISO-8859-1 is 0x00-0xbf in the first byte
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
323 * followed by 0xc0-0xc3 in the second */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
324 if ((unsigned char)utf8[i] < 0x80) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
325 i++;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
326 continue;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
327 } else if (((unsigned char)utf8[i] & 0xfc) == 0xc0 &&
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
328 ((unsigned char)utf8[i + 1] & 0xc0) == 0x80) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
329 i += 2;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
330 continue;
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 encodingflag = AIM_IMFLAGS_UNICODE;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
333 break;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
334 }
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 return encodingflag;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
337 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
338
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
339 static fu32_t oscar_encoding_parse(const char *enc)
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
340 {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
341 char *charset;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
342
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
343 /* 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
344 if (enc == NULL) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
345 debug_printf("Encoding was null, that's odd\n");
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 = strstr(enc, "charset=");
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
349 if (charset == NULL) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
350 debug_printf("No charset specified for info, assuming ASCII\n");
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 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
353 charset += 8;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
354 if (!strcmp(charset, "\"us-ascii\"") || !strcmp(charset, "\"utf-8\"")) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
355 /* UTF-8 is our native charset, ASCII is a proper subset */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
356 return 0;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
357 } else if (!strcmp(charset, "\"iso-8859-1\"")) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
358 return AIM_IMFLAGS_ISO_8859_1;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
359 } else if (!strcmp(charset, "\"unicode-2-0\"")) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
360 return AIM_IMFLAGS_UNICODE;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
361 } else {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
362 debug_printf("Unrecognized character set '%s', using ASCII\n", charset);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
363 return 0;
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 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
366
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
367 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
368 {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
369 gchar *utf8 = NULL;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
370 int flags = oscar_encoding_parse(encoding);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
371
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
372 switch (flags) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
373 case 0:
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
374 utf8 = g_strndup(text, textlen);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
375 break;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
376 case AIM_IMFLAGS_ISO_8859_1:
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
377 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
378 break;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
379 case AIM_IMFLAGS_UNICODE:
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
380 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
381 break;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
382 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
383
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
384 return utf8;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
385 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
386
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
387 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
388 GSList *d = od->direct_ims;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
389 struct direct_im *m = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
390
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
391 while (d) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
392 m = (struct direct_im *)d->data;
4355
87128096267f [gaim-migrate @ 4620]
Aubin LaBrosse
parents: 4353
diff changeset
393 if (!aim_sncmp(who, m->name))
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
394 return m;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
395 d = d->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
396 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
397
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
398 return NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
399 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
400
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
401 static char *extract_name(const char *name) {
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
402 char *tmp, *x;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
403 int i, j;
4120
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
404
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
405 if (!name)
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
406 return NULL;
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
407
4120
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
408 x = strchr(name, '-');
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
409
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
410 if (!x) return NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
411 x = strchr(++x, '-');
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
412 if (!x) return NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
413 tmp = g_strdup(++x);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
414
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
415 for (i = 0, j = 0; x[i]; i++) {
2361
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
416 char hex[3];
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
417 if (x[i] != '%') {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
418 tmp[j++] = x[i];
2361
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
419 continue;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
420 }
2361
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
421 strncpy(hex, x + ++i, 2); hex[2] = 0;
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
422 i++;
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
423 tmp[j++] = strtol(hex, NULL, 16);
2086
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
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
426 tmp[j] = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
427 return tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
428 }
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 static struct chat_connection *find_oscar_chat(struct gaim_connection *gc, int id) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
431 GSList *g = ((struct oscar_data *)gc->proto_data)->oscar_chats;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
432 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
433
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
434 while (g) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
435 c = (struct chat_connection *)g->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
436 if (c->id == id)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
437 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
438 g = g->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
439 c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
440 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
441
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
442 return c;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
443 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
444
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
445 static struct chat_connection *find_oscar_chat_by_conn(struct gaim_connection *gc,
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
446 aim_conn_t *conn) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
447 GSList *g = ((struct oscar_data *)gc->proto_data)->oscar_chats;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
448 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
449
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
450 while (g) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
451 c = (struct chat_connection *)g->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
452 if (c->conn == conn)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
453 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
454 g = g->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
455 c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
456 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
457
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
458 return c;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
459 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
460
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
461 static void gaim_odc_disconnect(aim_session_t *sess, aim_conn_t *conn) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
462 struct gaim_connection *gc = sess->aux_data;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
463 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
464 struct gaim_conversation *cnv;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
465 struct direct_im *dim;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
466 char *sn;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
467 char buf[256];
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
468
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
469 sn = g_strdup(aim_odc_getsn(conn));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
470
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
471 debug_printf("%s disconnected Direct IM.\n", sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
472
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
473 dim = find_direct_im(od, sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
474 od->direct_ims = g_slist_remove(od->direct_ims, dim);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
475 gaim_input_remove(dim->watcher);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
476
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
477 if (dim->connected)
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
478 g_snprintf(buf, sizeof buf, _("Direct IM with %s closed"), sn);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
479 else
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
480 g_snprintf(buf, sizeof buf, _("Direct IM with %s failed"), sn);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
481
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
482 if ((cnv = gaim_find_conversation(sn)))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
483 gaim_conversation_write(cnv, NULL, buf, -1, WFLAG_SYSTEM, time(NULL));
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
484
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
485 gaim_conversation_update_progress(cnv, 100);
2246
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 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
488 g_free(sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
489
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
490 return;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
491 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
492
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
493 static void oscar_callback(gpointer data, gint source, GaimInputCondition condition) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
494 aim_conn_t *conn = (aim_conn_t *)data;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
495 aim_session_t *sess = aim_conn_getsess(conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
496 struct gaim_connection *gc = sess ? sess->aux_data : NULL;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
497 struct oscar_data *od;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
498
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
499 if (!gc) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
500 /* gc is null. we return, else we seg SIGSEG on next line. */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
501 debug_printf("oscar callback for closed connection (1).\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
502 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
503 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
504
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
505 od = (struct oscar_data *)gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
506
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
507 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
508 /* oh boy. this is probably bad. i guess the only thing we
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
509 * can really do is return? */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
510 debug_printf("oscar callback for closed connection (2).\n");
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
511 debug_printf("gc = %p\n", gc);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
512 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
513 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
514
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
515 if (condition & GAIM_INPUT_READ) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
516 if (conn->type == AIM_CONN_TYPE_LISTENER) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
517 debug_printf("got information on rendezvous listener\n");
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
518 if (aim_handlerendconnect(od->sess, conn) < 0) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
519 debug_printf("connection error (rendezvous listener)\n");
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
520 aim_conn_kill(od->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
521 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
522 } else {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
523 if (aim_get_command(od->sess, conn) >= 0) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
524 aim_rxdispatch(od->sess);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
525 if (od->killme)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
526 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
527 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
528 if ((conn->type == AIM_CONN_TYPE_BOS) ||
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
529 !(aim_getconn_type(od->sess, AIM_CONN_TYPE_BOS))) {
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
530 debug_printf("major connection error\n");
3074
b6510843df8f [gaim-migrate @ 3088]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3068
diff changeset
531 hide_login_progress_error(gc, _("Disconnected."));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
532 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
533 } else if (conn->type == AIM_CONN_TYPE_CHAT) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
534 struct chat_connection *c = find_oscar_chat_by_conn(gc, conn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
535 char buf[BUF_LONG];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
536 debug_printf("disconnected from chat room %s\n", c->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
537 c->conn = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
538 if (c->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
539 gaim_input_remove(c->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
540 c->inpa = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
541 c->fd = -1;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
542 aim_conn_kill(od->sess, &conn);
3574
b4839ec94817 [gaim-migrate @ 3673]
Luke Schierer <lschiere@pidgin.im>
parents: 3572
diff changeset
543 snprintf(buf, sizeof(buf), _("You have been disconnected from chat room %s."), c->name);
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
544 do_error_dialog(buf, NULL, GAIM_ERROR);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
545 } else if (conn->type == AIM_CONN_TYPE_CHATNAV) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
546 if (od->cnpa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
547 gaim_input_remove(od->cnpa);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
548 od->cnpa = 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
549 debug_printf("removing chatnav input watcher\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
550 while (od->create_rooms) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
551 struct create_room *cr = od->create_rooms->data;
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
552 g_free(cr->name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
553 od->create_rooms =
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
554 g_slist_remove(od->create_rooms, cr);
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
555 g_free(cr);
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
556 do_error_dialog(_("Chat is currently unavailable"), NULL, GAIM_ERROR);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
557 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
558 aim_conn_kill(od->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
559 } else if (conn->type == AIM_CONN_TYPE_AUTH) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
560 if (od->paspa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
561 gaim_input_remove(od->paspa);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
562 od->paspa = 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
563 debug_printf("removing authconn input watcher\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
564 aim_conn_kill(od->sess, &conn);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
565 } else if (conn->type == AIM_CONN_TYPE_EMAIL) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
566 if (od->emlpa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
567 gaim_input_remove(od->emlpa);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
568 od->emlpa = 0;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
569 debug_printf("removing email input watcher\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
570 aim_conn_kill(od->sess, &conn);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
571 } else if (conn->type == AIM_CONN_TYPE_ICON) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
572 if (od->icopa > 0)
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
573 gaim_input_remove(od->icopa);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
574 od->icopa = 0;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
575 debug_printf("removing icon input watcher\n");
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
576 aim_conn_kill(od->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
577 } else if (conn->type == AIM_CONN_TYPE_RENDEZVOUS) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
578 if (conn->subtype == AIM_CONN_SUBTYPE_OFT_DIRECTIM)
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
579 gaim_odc_disconnect(od->sess, conn);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
580 aim_conn_kill(od->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
581 } else {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
582 debug_printf("holy crap! generic connection error! %hu\n",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
583 conn->type);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
584 aim_conn_kill(od->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
585 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
586 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
587 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
588 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
589 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
590
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
591 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
592 char *s = g_strdup_vprintf(format, va);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
593 char buf[256];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
594 char *t;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
595 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
596
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
597 g_snprintf(buf, sizeof(buf), "%s %d: ", gc->username, level);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
598 t = g_strconcat(buf, s, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
599 debug_printf(t);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
600 if (t[strlen(t)-1] != '\n')
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
601 debug_printf("\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
602 g_free(t);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
603 g_free(s);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
604 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
605
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
606 static void oscar_login_connect(gpointer data, gint source, GaimInputCondition cond)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
607 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
608 struct gaim_connection *gc = data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
609 struct oscar_data *od;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
610 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
611 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
612
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
613 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
614 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
615 return;
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
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
618 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
619 sess = od->sess;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
620 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
621
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
622 conn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
623
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
624 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
625 hide_login_progress(gc, _("Couldn't connect to host"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
626 signoff(gc);
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
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
630 aim_conn_completeconnect(sess, conn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
631 gc->inpa = gaim_input_add(conn->fd, GAIM_INPUT_READ, oscar_callback, conn);
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
632 debug_printf("Password sent, waiting for response\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
633 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
634
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
635 static void oscar_login(struct gaim_account *account) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
636 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
637 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
638 char buf[256];
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
639 struct gaim_connection *gc = new_gaim_conn(account);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
640 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
641
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
642 debug_printf("oscar_login: gc = %p\n", gc);
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
643
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
644 if (isdigit(*account->username)) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
645 od->icq = TRUE;
3064
d20bc95cf928 [gaim-migrate @ 3078]
Sean Egan <seanegan@pidgin.im>
parents: 3063
diff changeset
646 gc->password[8] = 0;
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
647 } else {
2918
f4efca1781b7 [gaim-migrate @ 2931]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2916
diff changeset
648 gc->flags |= OPT_CONN_HTML;
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
649 gc->flags |= OPT_CONN_AUTO_RESP;
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
650 }
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
651 od->buddyinfo = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
652
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
653 sess = g_new0(aim_session_t, 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
654
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
655 aim_session_init(sess, AIM_SESS_FLAGS_NONBLOCKCONNECT, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
656 aim_setdebuggingcb(sess, oscar_debug);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
657
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
658 /* 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
659 * see if things need to be sent. */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
660 aim_tx_setenqueue(sess, AIM_TX_IMMEDIATE, NULL);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
661 od->sess = sess;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
662 sess->aux_data = gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
663
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
664 conn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
665 if (conn == NULL) {
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
666 debug_printf("internal connection error\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
667 hide_login_progress(gc, _("Unable to login to AIM"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
668 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
669 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
670 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
671
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
672 g_snprintf(buf, sizeof(buf), _("Signon: %s"), gc->username);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
673 set_login_progress(gc, 2, buf);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
674
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
675 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
676 aim_conn_addhandler(sess, conn, 0x0017, 0x0007, gaim_parse_login, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
677 aim_conn_addhandler(sess, conn, 0x0017, 0x0003, gaim_parse_auth_resp, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
678
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
679 conn->status |= AIM_CONN_STATUS_INPROGRESS;
4634
c4318fc60090 [gaim-migrate @ 4941]
Nathan Walp <nwalp@pidgin.im>
parents: 4628
diff changeset
680 if (proxy_connect(account, account->proto_opt[USEROPT_AUTH][0] ?
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
681 account->proto_opt[USEROPT_AUTH] : FAIM_LOGIN_SERVER,
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
682 account->proto_opt[USEROPT_AUTHPORT][0] ?
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
683 atoi(account->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT,
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
684 oscar_login_connect, gc) < 0) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
685 hide_login_progress(gc, _("Couldn't connect to host"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
686 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
687 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
688 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
689 aim_request_login(sess, conn, gc->username);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
690 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
691
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
692 static void oscar_close(struct gaim_connection *gc) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
693 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
694
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
695 while (od->oscar_chats) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
696 struct chat_connection *n = od->oscar_chats->data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
697 if (n->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
698 gaim_input_remove(n->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
699 g_free(n->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
700 g_free(n->show);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
701 od->oscar_chats = g_slist_remove(od->oscar_chats, n);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
702 g_free(n);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
703 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
704 while (od->direct_ims) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
705 struct direct_im *n = od->direct_ims->data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
706 if (n->watcher > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
707 gaim_input_remove(n->watcher);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
708 od->direct_ims = g_slist_remove(od->direct_ims, n);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
709 g_free(n);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
710 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
711 /* BBB */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
712 while (od->file_transfers) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
713 struct gaim_xfer *xfer;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
714 xfer = (struct gaim_xfer *)od->file_transfers->data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
715 gaim_xfer_destroy(xfer);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
716 }
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
717 while (od->requesticon) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
718 char *sn = od->requesticon->data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
719 od->requesticon = g_slist_remove(od->requesticon, sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
720 free(sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
721 }
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
722 g_hash_table_destroy(od->buddyinfo);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
723 while (od->evilhack) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
724 g_free(od->evilhack->data);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
725 od->evilhack = g_slist_remove(od->evilhack, od->evilhack->data);
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
726 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
727 while (od->create_rooms) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
728 struct create_room *cr = od->create_rooms->data;
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
729 g_free(cr->name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
730 od->create_rooms = g_slist_remove(od->create_rooms, cr);
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
731 g_free(cr);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
732 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
733 if (od->email)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
734 g_free(od->email);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
735 if (od->newp)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
736 g_free(od->newp);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
737 if (od->oldp)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
738 g_free(od->oldp);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
739 if (gc->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
740 gaim_input_remove(gc->inpa);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
741 if (od->cnpa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
742 gaim_input_remove(od->cnpa);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
743 if (od->paspa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
744 gaim_input_remove(od->paspa);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
745 if (od->emlpa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
746 gaim_input_remove(od->emlpa);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
747 if (od->icopa > 0)
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
748 gaim_input_remove(od->icopa);
4832
32a5d9c54484 [gaim-migrate @ 5157]
Mark Doliner <markdoliner@pidgin.im>
parents: 4830
diff changeset
749 if (od->icopa > 0)
32a5d9c54484 [gaim-migrate @ 5157]
Mark Doliner <markdoliner@pidgin.im>
parents: 4830
diff changeset
750 gaim_input_remove(od->icopa);
32a5d9c54484 [gaim-migrate @ 5157]
Mark Doliner <markdoliner@pidgin.im>
parents: 4830
diff changeset
751 if (od->icontimer)
32a5d9c54484 [gaim-migrate @ 5157]
Mark Doliner <markdoliner@pidgin.im>
parents: 4830
diff changeset
752 g_source_remove(od->icontimer);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
753 aim_session_kill(od->sess);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
754 g_free(od->sess);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
755 od->sess = NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
756 g_free(gc->proto_data);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
757 gc->proto_data = NULL;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
758 debug_printf("Signed off.\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
759 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
760
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
761 static void oscar_bos_connect(gpointer data, gint source, GaimInputCondition cond) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
762 struct gaim_connection *gc = data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
763 struct oscar_data *od;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
764 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
765 aim_conn_t *bosconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
766
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
767 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
768 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
769 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
770 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
771
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
772 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
773 sess = od->sess;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
774 bosconn = od->conn;
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
775 bosconn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
776
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
777 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
778 hide_login_progress(gc, _("Could Not Connect"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
779 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
780 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
781 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
782
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
783 aim_conn_completeconnect(sess, bosconn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
784 gc->inpa = gaim_input_add(bosconn->fd, GAIM_INPUT_READ, oscar_callback, bosconn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
785 set_login_progress(gc, 4, _("Connection established, cookie sent"));
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
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
788 /* BBB */
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
789 /*
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
790 * 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
791 * 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
792 * ninja.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
793 *
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
794 * The series of events for a file send is:
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
795 * -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
796 * -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
797 * 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
798 * gives them the file name, port, IP, etc.)
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
799 * -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
800 * in oscar_sendfile_estblsh)
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
801 * -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
802 * -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
803 * connection.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
804 * -We get drunk because file transfer kicks ass.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
805 *
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
806 * The series of events for a file receive is:
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
807 * -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
808 * -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
809 * oscar_xfer_init is called
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
810 * -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
811 * -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
812 * them an AIM_CB_OFT_ACK.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
813 * -They begin to send us lots of raw data.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
814 * -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
815 * the connectionn.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
816 */
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
817 static void oscar_sendfile_connected(gpointer data, gint source, GaimInputCondition condition);
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
818
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
819 /* XXX - This function is pretty ugly */
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
820 static void oscar_xfer_init(struct gaim_xfer *xfer)
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
821 {
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
822 struct aim_oft_info *oft_info = xfer->data;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
823 struct gaim_connection *gc = oft_info->sess->aux_data;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
824 struct oscar_data *od = gc->proto_data;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
825
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
826 if (gaim_xfer_get_type(xfer) == GAIM_XFER_SEND) {
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
827 int i;
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 xfer->filename = g_path_get_basename(xfer->local_filename);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
830 strncpy(oft_info->fh.name, xfer->filename, 64);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
831 oft_info->fh.totsize = gaim_xfer_get_size(xfer);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
832 oft_info->fh.size = gaim_xfer_get_size(xfer);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
833 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
834
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
835 /*
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
836 * First try the port specified earlier (5190). If that fails,
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
837 * increment by 1 and try again.
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
838 */
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
839 aim_sendfile_listen(od->sess, oft_info);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
840 for (i=0; (i<5 && !oft_info->conn); i++) {
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
841 xfer->local_port = oft_info->port = oft_info->port + 1;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
842 aim_sendfile_listen(od->sess, oft_info);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
843 }
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
844 debug_printf("port is %d, ip is %s\n", xfer->local_port, oft_info->clientip);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
845 if (oft_info->conn) {
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
846 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
847 aim_im_sendch2_sendfile_ask(od->sess, oft_info);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
848 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
849 } else {
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
850 do_error_dialog(_("File Transfer Aborted"), _("Unable to establish listener socket."), GAIM_ERROR);
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
851 /* 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
852 /* gaim_xfer_cancel_remote(xfer); */
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
853 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
854 } else if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) {
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
855 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
856 if (oft_info->conn) {
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
857 oft_info->conn->subtype = AIM_CONN_SUBTYPE_OFT_SENDFILE;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
858 aim_conn_addhandler(od->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_PROMPT, oscar_sendfile_prompt, 0);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
859 oft_info->conn->fd = xfer->fd = proxy_connect(gc->account, xfer->remote_ip, xfer->remote_port, oscar_sendfile_connected, xfer);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
860 if (xfer->fd == -1) {
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
861 do_error_dialog(_("File Transfer Aborted"), _("Unable to establish file descriptor."), GAIM_ERROR);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
862 /* gaim_xfer_cancel_remote(xfer); */
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
863 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
864 } else {
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
865 do_error_dialog(_("File Transfer Aborted"), _("Unable to create new connection."), GAIM_ERROR);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
866 /* gaim_xfer_cancel_remote(xfer); */
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
867 /* Try a different port? Ask them to connect to us? */
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
868 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
869
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
870 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
871 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
872
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
873 static void oscar_xfer_start(struct gaim_xfer *xfer)
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
874 {
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
875
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
876 debug_printf("AAA - in oscar_xfer_start\n");
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
877 /* 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
878 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
879
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
880 static void oscar_xfer_end(struct gaim_xfer *xfer)
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
881 {
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
882 struct aim_oft_info *oft_info = xfer->data;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
883 struct gaim_connection *gc = oft_info->sess->aux_data;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
884 struct oscar_data *od = gc->proto_data;
4656
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 debug_printf("AAA - in oscar_xfer_end\n");
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
887
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
888 if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) {
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
889 oft_info->fh.nrecvd = gaim_xfer_get_bytes_sent(xfer);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
890 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
891 }
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
892
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
893 aim_conn_kill(oft_info->sess, &oft_info->conn);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
894 aim_oft_destroyinfo(oft_info);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
895 xfer->data = NULL;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
896 od->file_transfers = g_slist_remove(od->file_transfers, xfer);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
897 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
898
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
899 static void oscar_xfer_cancel_send(struct gaim_xfer *xfer)
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
900 {
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
901 struct aim_oft_info *oft_info = xfer->data;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
902 struct gaim_connection *gc = oft_info->sess->aux_data;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
903 struct oscar_data *od = gc->proto_data;
4763
7313e8049f0e [gaim-migrate @ 5081]
Mark Doliner <markdoliner@pidgin.im>
parents: 4762
diff changeset
904
7313e8049f0e [gaim-migrate @ 5081]
Mark Doliner <markdoliner@pidgin.im>
parents: 4762
diff changeset
905 debug_printf("AAA - in oscar_xfer_cancel_send\n");
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
906
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
907 aim_im_sendch2_sendfile_cancel(oft_info->sess, oft_info);
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);
4763
7313e8049f0e [gaim-migrate @ 5081]
Mark Doliner <markdoliner@pidgin.im>
parents: 4762
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);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
913 }
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
914
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
915 static void oscar_xfer_cancel_recv(struct gaim_xfer *xfer)
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
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;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
918 struct gaim_connection *gc = oft_info->sess->aux_data;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
919 struct oscar_data *od = gc->proto_data;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
920
4763
7313e8049f0e [gaim-migrate @ 5081]
Mark Doliner <markdoliner@pidgin.im>
parents: 4762
diff changeset
921 debug_printf("AAA - in oscar_xfer_cancel_recv\n");
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
922
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
923 aim_im_sendch2_sendfile_cancel(oft_info->sess, oft_info);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
924
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
925 aim_conn_kill(oft_info->sess, &oft_info->conn);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
926 aim_oft_destroyinfo(oft_info);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
927 xfer->data = NULL;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
928 od->file_transfers = g_slist_remove(od->file_transfers, xfer);
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
929 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
930
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
931 static void oscar_xfer_ack(struct gaim_xfer *xfer, const char *buffer, size_t size)
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
932 {
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
933 struct aim_oft_info *oft_info = xfer->data;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
934
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
935 if (gaim_xfer_get_type(xfer) == GAIM_XFER_SEND) {
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
936 /*
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
937 * 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
938 * 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
939 */
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
940 if (gaim_xfer_get_bytes_remaining(xfer) <= 0) {
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
941 gaim_input_remove(xfer->watcher);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
942 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
943 xfer->fd = 0;
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
944 gaim_xfer_set_completed(xfer, TRUE);
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
945 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
946 } else if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) {
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
947 /* Update our rolling checksum. Like Walmart, yo. */
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
948 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
949 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
950 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
951
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
952 static struct gaim_xfer *oscar_find_xfer_by_cookie(GSList *fts, const char *ck)
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
953 {
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
954 struct gaim_xfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
955 struct aim_oft_info *oft_info;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
956
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
957 while (fts) {
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
958 xfer = fts->data;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
959 oft_info = xfer->data;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
960
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
961 if (oft_info && !strcmp(ck, oft_info->cookie))
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
962 return xfer;
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 fts = g_slist_next(fts);
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
965 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
966
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
967 return NULL;
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
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
970 static struct gaim_xfer *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
971 {
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
972 struct gaim_xfer *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 && (conn == oft_info->conn))
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
5136
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
988 static void oscar_ask_sendfile(struct gaim_connection *gc, const char *destsn) {
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
989 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
990 struct gaim_xfer *xfer;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
991 struct aim_oft_info *oft_info;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
992 aim_conn_t *conn;
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
993
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
994 /* 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
995
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
996 /* Build the file transfer handle */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
997 xfer = gaim_xfer_new(gc->account, GAIM_XFER_SEND, destsn);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
998 if ((conn = aim_conn_findbygroup(od->sess, 0x0004)))
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
999 xfer->local_ip = gaim_getip_from_fd(conn->fd);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1000 xfer->local_port = 5190;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1001
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1002 /* Create the oscar-specific data */
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1003 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
1004 xfer->data = oft_info;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1005
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1006 /* Setup our I/O op functions */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1007 gaim_xfer_set_init_fnc(xfer, oscar_xfer_init);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1008 gaim_xfer_set_start_fnc(xfer, oscar_xfer_start);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1009 gaim_xfer_set_end_fnc(xfer, oscar_xfer_end);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
1010 gaim_xfer_set_cancel_send_fnc(xfer, oscar_xfer_cancel_send);
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
1011 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
1012 gaim_xfer_set_ack_fnc(xfer, oscar_xfer_ack);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1013
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1014 /* Keep track of this transfer for later */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1015 od->file_transfers = g_slist_append(od->file_transfers, xfer);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1016
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1017 /* Now perform the request */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1018 gaim_xfer_request(xfer);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1019 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1020
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1021 static int gaim_parse_auth_resp(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1022 va_list ap;
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1023 struct aim_authresp_info *info;
4452
1e5d62c19533 [gaim-migrate @ 4727]
Sean Egan <seanegan@pidgin.im>
parents: 4443
diff changeset
1024 int i, rc;
1e5d62c19533 [gaim-migrate @ 4727]
Sean Egan <seanegan@pidgin.im>
parents: 4443
diff changeset
1025 char *host; int port;
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
1026 struct gaim_account *account;
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1027 aim_conn_t *bosconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1028
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1029 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1030 struct oscar_data *od = gc->proto_data;
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
1031 account = gc->account;
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
1032 port = account->proto_opt[USEROPT_AUTHPORT][0] ?
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
1033 atoi(account->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1034
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1035 va_start(ap, fr);
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1036 info = va_arg(ap, struct aim_authresp_info *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1037 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1038
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1039 debug_printf("inside auth_resp (Screen name: %s)\n", info->sn);
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1040
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
1041 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
1042 char buf[256];
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1043 switch (info->errorcode) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1044 case 0x05:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1045 /* Incorrect nick/password */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1046 hide_login_progress(gc, _("Incorrect nickname or password."));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1047 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1048 case 0x11:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1049 /* Suspended account */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1050 hide_login_progress(gc, _("Your account is currently suspended."));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1051 break;
3498
3f6ce04ea3ad [gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents: 3490
diff changeset
1052 case 0x14:
3f6ce04ea3ad [gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents: 3490
diff changeset
1053 /* service temporarily unavailable */
3f6ce04ea3ad [gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents: 3490
diff changeset
1054 hide_login_progress(gc, _("The AOL Instant Messenger service is temporarily unavailable."));
3f6ce04ea3ad [gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents: 3490
diff changeset
1055 break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1056 case 0x18:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1057 /* connecting too frequently */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1058 hide_login_progress(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."));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1059 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1060 case 0x1c:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1061 /* client too old */
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1062 g_snprintf(buf, sizeof(buf), _("The client version you are using is too old. Please upgrade at %s"), WEBSITE);
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1063 hide_login_progress(gc, buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1064 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1065 default:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1066 hide_login_progress(gc, _("Authentication Failed"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1067 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1068 }
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1069 debug_printf("Login Error Code 0x%04hx\n", info->errorcode);
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1070 debug_printf("Error URL: %s\n", info->errorurl);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1071 od->killme = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1072 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1073 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1074
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1075
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1076 debug_printf("Reg status: %hu\n", info->regstatus);
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1077 if (info->email) {
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1078 debug_printf("Email: %s\n", info->email);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1079 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1080 debug_printf("Email is NULL\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1081 }
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1082 debug_printf("BOSIP: %s\n", info->bosip);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1083 debug_printf("Closing auth connection...\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1084 aim_conn_kill(sess, &fr->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1085
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1086 bosconn = aim_newconn(sess, AIM_CONN_TYPE_BOS, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1087 if (bosconn == NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1088 hide_login_progress(gc, _("Internal Error"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1089 od->killme = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1090 return 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1091 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1092
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
1093 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
1094 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
1095 aim_conn_addhandler(sess, bosconn, 0x0009, 0x0003, gaim_bosrights, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1096 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
1097 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
1098 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
1099 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
1100 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
1101 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
1102 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
1103 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
1104 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
1105 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
1106 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
1107 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
1108 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
1109 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
1110 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
1111 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
1112 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
1113 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
1114 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
1115 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
1116 aim_conn_addhandler(sess, bosconn, 0x0001, 0x0001, gaim_parse_genericerr, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1117 aim_conn_addhandler(sess, bosconn, 0x0003, 0x0001, gaim_parse_genericerr, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1118 aim_conn_addhandler(sess, bosconn, 0x0009, 0x0001, gaim_parse_genericerr, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1119 aim_conn_addhandler(sess, bosconn, 0x0001, 0x001f, gaim_memrequest, 0);
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
1120 aim_conn_addhandler(sess, bosconn, 0x0001, 0x000f, gaim_selfinfo, 0);
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
1121 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
1122 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
1123 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
1124 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
1125 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
1126 #ifndef NOSSI
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
1127 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
1128 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
1129 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
1130 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
1131 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
1132 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
1133 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
1134 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
1135 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
1136 #endif
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
1137
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1138 ((struct oscar_data *)gc->proto_data)->conn = bosconn;
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1139 for (i = 0; i < (int)strlen(info->bosip); i++) {
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1140 if (info->bosip[i] == ':') {
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1141 port = atoi(&(info->bosip[i+1]));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1142 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1143 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1144 }
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1145 host = g_strndup(info->bosip, i);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1146 bosconn->status |= AIM_CONN_STATUS_INPROGRESS;
4634
c4318fc60090 [gaim-migrate @ 4941]
Nathan Walp <nwalp@pidgin.im>
parents: 4628
diff changeset
1147 rc = proxy_connect(gc->account, host, port, oscar_bos_connect, gc);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1148 g_free(host);
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
1149 if (rc < 0) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1150 hide_login_progress(gc, _("Could Not Connect"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1151 od->killme = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1152 return 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1153 }
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
1154 aim_sendcookie(sess, bosconn, info->cookielen, info->cookie);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1155 gaim_input_remove(gc->inpa);
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
1156
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1157 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1158 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1159
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1160 struct pieceofcrap {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1161 struct gaim_connection *gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1162 unsigned long offset;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1163 unsigned long len;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1164 char *modname;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1165 int fd;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1166 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1167 unsigned int inpa;
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
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1170 static void damn_you(gpointer data, gint source, GaimInputCondition c)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1171 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1172 struct pieceofcrap *pos = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1173 struct oscar_data *od = pos->gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1174 char in = '\0';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1175 int x = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1176 unsigned char m[17];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1177
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1178 while (read(pos->fd, &in, 1) == 1) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1179 if (in == '\n')
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1180 x++;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1181 else if (in != '\r')
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1182 x = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1183 if (x == 2)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1184 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1185 in = '\0';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1186 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1187 if (in != '\n') {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1188 char buf[256];
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1189 g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. You may want to use TOC until "
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1190 "this is fixed. Check %s for updates."), WEBSITE);
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
1191 do_error_dialog(_("Gaim was Unable to get a valid AIM login hash."),
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1192 buf, GAIM_WARNING);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1193 gaim_input_remove(pos->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1194 close(pos->fd);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1195 g_free(pos);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1196 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1197 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1198 read(pos->fd, m, 16);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1199 m[16] = '\0';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1200 debug_printf("Sending hash: ");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1201 for (x = 0; x < 16; x++)
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1202 debug_printf("%02hhx ", (unsigned char)m[x]);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1203 debug_printf("\n");
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1204 gaim_input_remove(pos->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1205 close(pos->fd);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1206 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
1207 g_free(pos);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1208 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1209
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1210 static void straight_to_hell(gpointer data, gint source, GaimInputCondition cond) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1211 struct pieceofcrap *pos = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1212 char buf[BUF_LONG];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1213
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
1214 pos->fd = source;
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
1215
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1216 if (source < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1217 char buf[256];
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1218 g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. You may want to use TOC until "
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1219 "this is fixed. Check %s for updates."), WEBSITE);
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
1220 do_error_dialog(_("Gaim was Unable to get a valid AIM login hash."),
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1221 buf, GAIM_WARNING);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1222 if (pos->modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1223 g_free(pos->modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1224 g_free(pos);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1225 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1226 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1227
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1228 g_snprintf(buf, sizeof(buf), "GET " AIMHASHDATA
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1229 "?offset=%ld&len=%ld&modname=%s HTTP/1.0\n\n",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1230 pos->offset, pos->len, pos->modname ? pos->modname : "");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1231 write(pos->fd, buf, strlen(buf));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1232 if (pos->modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1233 g_free(pos->modname);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1234 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
1235 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1236 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1237
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1238 /* size of icbmui.ocm, the largest module in AIM 3.5 */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1239 #define AIM_MAX_FILE_SIZE 98304
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1240
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1241 int gaim_memrequest(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1242 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1243 struct pieceofcrap *pos;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1244 fu32_t offset, len;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1245 char *modname;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1246
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1247 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
1248 offset = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
1249 len = va_arg(ap, fu32_t);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1250 modname = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1251 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1252
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1253 debug_printf("offset: %lu, len: %lu, file: %s\n", offset, len, (modname ? modname : "aim.exe"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1254 if (len == 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1255 debug_printf("len is 0, hashing NULL\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1256 aim_sendmemblock(sess, fr->conn, offset, len, NULL,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1257 AIM_SENDMEMBLOCK_FLAG_ISREQUEST);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1258 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1259 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1260 /* 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
1261 if (offset > AIM_MAX_FILE_SIZE || len > AIM_MAX_FILE_SIZE) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1262 char *buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1263 int i = 8;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1264 if (modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1265 i += strlen(modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1266 buf = g_malloc(i);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1267 i = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1268 if (modname) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1269 memcpy(buf, modname, strlen(modname));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1270 i += strlen(modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1271 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1272 buf[i++] = offset & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1273 buf[i++] = (offset >> 8) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1274 buf[i++] = (offset >> 16) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1275 buf[i++] = (offset >> 24) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1276 buf[i++] = len & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1277 buf[i++] = (len >> 8) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1278 buf[i++] = (len >> 16) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1279 buf[i++] = (len >> 24) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1280 debug_printf("len + offset is invalid, hashing request\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1281 aim_sendmemblock(sess, command->conn, offset, i, buf, AIM_SENDMEMBLOCK_FLAG_ISREQUEST);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1282 g_free(buf);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1283 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1284 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1285 */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1286
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1287 pos = g_new0(struct pieceofcrap, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1288 pos->gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1289 pos->conn = fr->conn;
2086
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 pos->offset = offset;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1292 pos->len = len;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1293 pos->modname = modname ? g_strdup(modname) : NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1294
4634
c4318fc60090 [gaim-migrate @ 4941]
Nathan Walp <nwalp@pidgin.im>
parents: 4628
diff changeset
1295 if (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
1296 char buf[256];
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1297 if (pos->modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1298 g_free(pos->modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1299 g_free(pos);
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1300 g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. You may want to use TOC until "
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1301 "this is fixed. Check %s for updates."), WEBSITE);
4452
1e5d62c19533 [gaim-migrate @ 4727]
Sean Egan <seanegan@pidgin.im>
parents: 4443
diff changeset
1302 do_error_dialog(_("Gaim was Unable to get a valid login hash."),
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1303 buf, GAIM_WARNING);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1304 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1305
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1306 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1307 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1308
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1309 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
1310 char *key;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1311 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1312 struct gaim_connection *gc = sess->aux_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1313 struct oscar_data *od = gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1314
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1315 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1316 key = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1317 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1318
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1319 if (od->icq) {
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1320 struct client_info_s info = CLIENTINFO_ICQ_KNOWNGOOD;
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1321 aim_send_login(sess, fr->conn, gc->username, gc->password, &info, key);
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1322 } else {
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1323 #if 0
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1324 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
1325 #endif
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1326 struct client_info_s info = CLIENTINFO_AIM_KNOWNGOOD;
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1327 aim_send_login(sess, fr->conn, gc->username, gc->password, &info, key);
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1328 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1329
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1330 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1331 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1332
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1333 static int conninitdone_chat(aim_session_t *sess, aim_frame_t *fr, ...) {
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1334 struct gaim_connection *gc = sess->aux_data;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1335 struct chat_connection *chatcon;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1336 static int id = 1;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1337
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1338 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
1339 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
1340 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
1341 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
1342 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
1343
2672
5c9b7617a1f3 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
1344 aim_clientready(sess, fr->conn);
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1345
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1346 chatcon = find_oscar_chat_by_conn(gc, fr->conn);
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1347 chatcon->id = id;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1348 chatcon->cnv = serv_got_joined_chat(gc, id++, chatcon->show);
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1349
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1350 return 1;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1351 }
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1352
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1353 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
1354
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1355 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
1356 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
1357
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1358 aim_clientready(sess, fr->conn);
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1359
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1360 aim_chatnav_reqrights(sess, fr->conn);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1361
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1362 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1363 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1364
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1365 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
1366
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1367 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
1368 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
1369
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1370 aim_email_sendcookies(sess, fr->conn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1371 aim_email_activate(sess, fr->conn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1372 aim_clientready(sess, fr->conn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1373
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1374 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1375 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1376
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1377 static int conninitdone_icon(aim_session_t *sess, aim_frame_t *fr, ...) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1378 struct gaim_connection *gc = sess->aux_data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1379 struct oscar_data *od = gc->proto_data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1380
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1381 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
1382 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
1383 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
1384
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1385 aim_clientready(sess, fr->conn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1386
4823
e855589fb088 [gaim-migrate @ 5148]
Roald Dahl
parents: 4822
diff changeset
1387 od->iconconnecting = FALSE;
e855589fb088 [gaim-migrate @ 5148]
Roald Dahl
parents: 4822
diff changeset
1388
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1389 if (od->icontimer)
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1390 g_source_remove(od->icontimer);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1391 od->icontimer = g_timeout_add(100, gaim_icon_timerfunc, gc);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1392
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1393 return 1;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1394 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1395
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1396 static void oscar_chatnav_connect(gpointer data, gint source, GaimInputCondition cond) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1397 struct gaim_connection *gc = data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1398 struct oscar_data *od;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1399 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1400 aim_conn_t *tstconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1401
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1402 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1403 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1404 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1405 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1406
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1407 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1408 sess = od->sess;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1409 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
1410 tstconn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1411
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1412 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1413 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1414 debug_printf("unable to connect to chatnav server\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1415 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1416 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1417
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1418 aim_conn_completeconnect(sess, tstconn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1419 od->cnpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1420 debug_printf("chatnav: connected\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1421 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1422
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1423 static void oscar_auth_connect(gpointer data, gint source, GaimInputCondition cond)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1424 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1425 struct gaim_connection *gc = data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1426 struct oscar_data *od;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1427 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1428 aim_conn_t *tstconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1429
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1430 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1431 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1432 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1433 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1434
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1435 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1436 sess = od->sess;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1437 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
1438 tstconn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1439
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1440 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1441 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1442 debug_printf("unable to connect to authorizer\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1443 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1444 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1445
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1446 aim_conn_completeconnect(sess, tstconn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1447 od->paspa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1448 debug_printf("chatnav: connected\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1449 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1450
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1451 static void oscar_chat_connect(gpointer data, gint source, GaimInputCondition cond)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1452 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1453 struct chat_connection *ccon = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1454 struct gaim_connection *gc = ccon->gc;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1455 struct oscar_data *od;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1456 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1457 aim_conn_t *tstconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1458
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1459 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1460 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1461 g_free(ccon->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1462 g_free(ccon->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1463 g_free(ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1464 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1465 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1466
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1467 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1468 sess = od->sess;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1469 tstconn = ccon->conn;
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
1470 tstconn->fd = source;
2086
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 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1473 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1474 g_free(ccon->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1475 g_free(ccon->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1476 g_free(ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1477 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1478 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1479
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1480 aim_conn_completeconnect(sess, ccon->conn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1481 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
1482 od->oscar_chats = g_slist_append(od->oscar_chats, ccon);
2086
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
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1485 static void oscar_email_connect(gpointer data, gint source, GaimInputCondition cond) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1486 struct gaim_connection *gc = data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1487 struct oscar_data *od;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1488 aim_session_t *sess;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1489 aim_conn_t *tstconn;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1490
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1491 if (!g_slist_find(connections, gc)) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1492 close(source);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1493 return;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1494 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1495
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1496 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1497 sess = od->sess;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1498 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
1499 tstconn->fd = source;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1500
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1501 if (source < 0) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1502 aim_conn_kill(sess, &tstconn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1503 debug_printf("unable to connect to email server\n");
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1504 return;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1505 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1506
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1507 aim_conn_completeconnect(sess, tstconn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1508 od->emlpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1509 debug_printf("email: connected\n");
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1510 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1511
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1512 static void oscar_icon_connect(gpointer data, gint source, GaimInputCondition cond) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1513 struct gaim_connection *gc = data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1514 struct oscar_data *od;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1515 aim_session_t *sess;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1516 aim_conn_t *tstconn;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1517
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1518 if (!g_slist_find(connections, gc)) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1519 close(source);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1520 return;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1521 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1522
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1523 od = gc->proto_data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1524 sess = od->sess;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1525 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_ICON);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1526 tstconn->fd = source;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1527
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1528 if (source < 0) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1529 aim_conn_kill(sess, &tstconn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1530 debug_printf("unable to connect to icon server\n");
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1531 return;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1532 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1533
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1534 aim_conn_completeconnect(sess, tstconn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1535 od->icopa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1536 debug_printf("icon: connected\n");
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1537 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1538
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1539 /* 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
1540 static int gaim_handle_redirect(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1541 struct gaim_connection *gc = sess->aux_data;
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
1542 struct gaim_account *account = gc->account;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1543 aim_conn_t *tstconn;
4452
1e5d62c19533 [gaim-migrate @ 4727]
Sean Egan <seanegan@pidgin.im>
parents: 4443
diff changeset
1544 int i;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1545 char *host;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1546 int port;
4821
9107fba2dbe5 [gaim-migrate @ 5146]
Mark Doliner <markdoliner@pidgin.im>
parents: 4820
diff changeset
1547 va_list ap;
9107fba2dbe5 [gaim-migrate @ 5146]
Mark Doliner <markdoliner@pidgin.im>
parents: 4820
diff changeset
1548 struct aim_redirect_data *redir;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1549
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
1550 port = account->proto_opt[USEROPT_AUTHPORT][0] ?
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
1551 atoi(account->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1552
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1553 va_start(ap, fr);
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1554 redir = va_arg(ap, struct aim_redirect_data *);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1555 va_end(ap);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1556
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1557 for (i = 0; i < (int)strlen(redir->ip); i++) {
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1558 if (redir->ip[i] == ':') {
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1559 port = atoi(&(redir->ip[i+1]));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1560 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1561 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1562 }
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1563 host = g_strndup(redir->ip, i);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1564
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1565 switch(redir->group) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1566 case 0x7: /* Authorizer */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1567 debug_printf("Reconnecting with authorizor...\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1568 tstconn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1569 if (tstconn == NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1570 debug_printf("unable to reconnect with authorizer\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1571 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1572 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1573 }
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
1574 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
1575 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
1576 aim_conn_addhandler(sess, tstconn, 0x0007, 0x0003, gaim_info_change, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1577 aim_conn_addhandler(sess, tstconn, 0x0007, 0x0005, gaim_info_change, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1578 aim_conn_addhandler(sess, tstconn, 0x0007, 0x0007, gaim_account_confirm, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1579
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1580 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
4634
c4318fc60090 [gaim-migrate @ 4941]
Nathan Walp <nwalp@pidgin.im>
parents: 4628
diff changeset
1581 if (proxy_connect(account, host, port, oscar_auth_connect, gc) != 0) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1582 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1583 debug_printf("unable to reconnect with authorizer\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1584 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1585 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1586 }
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
1587 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1588 break;
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1589
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1590 case 0xd: /* ChatNav */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1591 tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHATNAV, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1592 if (tstconn == NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1593 debug_printf("unable to connect to chatnav server\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1594 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1595 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1596 }
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
1597 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
1598 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
1599
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1600 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
4634
c4318fc60090 [gaim-migrate @ 4941]
Nathan Walp <nwalp@pidgin.im>
parents: 4628
diff changeset
1601 if (proxy_connect(account, host, port, oscar_chatnav_connect, gc) != 0) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1602 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1603 debug_printf("unable to connect to chatnav server\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1604 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1605 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1606 }
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
1607 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1608 break;
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1609
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1610 case 0xe: { /* Chat */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1611 struct chat_connection *ccon;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1612
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1613 tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHAT, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1614 if (tstconn == NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1615 debug_printf("unable to connect to chat server\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1616 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1617 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1618 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1619
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
1620 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
1621 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
1622
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1623 ccon = g_new0(struct chat_connection, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1624 ccon->conn = tstconn;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1625 ccon->gc = gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1626 ccon->fd = -1;
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1627 ccon->name = g_strdup(redir->chat.room);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1628 ccon->exchange = redir->chat.exchange;
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1629 ccon->instance = redir->chat.instance;
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1630 ccon->show = extract_name(redir->chat.room);
4634
c4318fc60090 [gaim-migrate @ 4941]
Nathan Walp <nwalp@pidgin.im>
parents: 4628
diff changeset
1631
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1632 ccon->conn->status |= AIM_CONN_STATUS_INPROGRESS;
4634
c4318fc60090 [gaim-migrate @ 4941]
Nathan Walp <nwalp@pidgin.im>
parents: 4628
diff changeset
1633 if (proxy_connect(account, host, port, oscar_chat_connect, ccon) != 0) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1634 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1635 debug_printf("unable to connect to chat server\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1636 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1637 g_free(ccon->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1638 g_free(ccon->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1639 g_free(ccon);
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 }
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
1642 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1643 debug_printf("Connected to chat room %s exchange %hu\n", ccon->name, ccon->exchange);
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1644 } break;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1645
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1646 case 0x0010: { /* icon */
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1647 if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_ICON, NULL))) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1648 debug_printf("unable to connect to icon server\n");
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1649 g_free(host);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1650 return 1;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1651 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1652 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
1653 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
1654
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1655 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1656 if (proxy_connect(account, host, port, oscar_icon_connect, gc) != 0) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1657 aim_conn_kill(sess, &tstconn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1658 debug_printf("unable to connect to icon server\n");
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1659 g_free(host);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1660 return 1;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1661 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1662 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1663 } break;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1664
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1665 case 0x0018: { /* email */
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1666 if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_EMAIL, NULL))) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1667 debug_printf("unable to connect to email server\n");
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1668 g_free(host);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1669 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1670 }
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
1671 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
1672 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
1673
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1674 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
4634
c4318fc60090 [gaim-migrate @ 4941]
Nathan Walp <nwalp@pidgin.im>
parents: 4628
diff changeset
1675 if (proxy_connect(account, host, port, oscar_email_connect, gc) != 0) {
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1676 aim_conn_kill(sess, &tstconn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1677 debug_printf("unable to connect to email server\n");
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1678 g_free(host);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1679 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1680 }
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
1681 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1682 } break;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1683
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1684 default: /* huh? */
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1685 debug_printf("got redirect for unknown service 0x%04hx\n", redir->group);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1686 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1687 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1688
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1689 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1690 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1691 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1692
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1693 static int gaim_parse_oncoming(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1694 struct gaim_connection *gc = sess->aux_data;
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
1695 struct oscar_data *od = gc->proto_data;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
1696 struct buddyinfo *bi;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1697 time_t time_idle = 0, signon = 0;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1698 int type = 0;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1699 int caps = 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1700 va_list ap;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
1701 aim_userinfo_t *info;
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1702
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1703 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
1704 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1705 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1706
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1707 if (info->present & AIM_USERINFO_PRESENT_CAPABILITIES)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1708 caps = info->capabilities;
3267
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1709 if (info->flags & AIM_FLAG_ACTIVEBUDDY)
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1710 type |= UC_AB;
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1711
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1712 if (info->present & AIM_USERINFO_PRESENT_FLAGS) {
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1713 if (info->flags & AIM_FLAG_UNCONFIRMED)
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1714 type |= UC_UNCONFIRMED;
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1715 if (info->flags & AIM_FLAG_ADMINISTRATOR)
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1716 type |= UC_ADMIN;
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1717 if (info->flags & AIM_FLAG_AOL)
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1718 type |= UC_AOL;
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1719 if (info->flags & AIM_FLAG_FREE)
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1720 type |= UC_NORMAL;
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1721 if (info->flags & AIM_FLAG_AWAY)
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1722 type |= UC_UNAVAILABLE;
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1723 if (info->flags & AIM_FLAG_WIRELESS)
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
1724 type |= UC_WIRELESS;
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
1725 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1726 if (info->present & AIM_USERINFO_PRESENT_ICQEXTSTATUS) {
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
1727 type = (info->icqinfo.status << 16);
3013
b937e542f50e [gaim-migrate @ 3026]
Sean Egan <seanegan@pidgin.im>
parents: 3009
diff changeset
1728 if (!(info->icqinfo.status & AIM_ICQ_STATE_CHAT) &&
b937e542f50e [gaim-migrate @ 3026]
Sean Egan <seanegan@pidgin.im>
parents: 3009
diff changeset
1729 (info->icqinfo.status != AIM_ICQ_STATE_NORMAL)) {
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1730 type |= UC_UNAVAILABLE;
3013
b937e542f50e [gaim-migrate @ 3026]
Sean Egan <seanegan@pidgin.im>
parents: 3009
diff changeset
1731 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1732 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1733
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1734 if (caps & AIM_CAPS_ICQ)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1735 caps ^= AIM_CAPS_ICQ;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1736
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1737 if (info->present & AIM_USERINFO_PRESENT_IDLE) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1738 time(&time_idle);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1739 time_idle -= info->idletime*60;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1740 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1741
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1742 if (info->present & AIM_USERINFO_PRESENT_SESSIONLEN)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1743 signon = time(NULL) - info->sessionlen;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1744
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
1745 if (!aim_sncmp(gc->username, info->sn))
2305
9ba346379088 [gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2303
diff changeset
1746 g_snprintf(gc->displayname, sizeof(gc->displayname), "%s", info->sn);
9ba346379088 [gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2303
diff changeset
1747
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
1748 bi = g_hash_table_lookup(od->buddyinfo, normalize(info->sn));
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
1749 if (!bi) {
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
1750 bi = g_new0(struct buddyinfo, 1);
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
1751 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
1752 }
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
1753 bi->signon = info->onlinesince ? info->onlinesince : (info->sessionlen + time(NULL));
4829
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
1754 if (caps)
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
1755 bi->caps = caps;
4739
7263e3ceab43 [gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents: 4738
diff changeset
1756 bi->typingnot = FALSE;
7263e3ceab43 [gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents: 4738
diff changeset
1757 bi->ico_informed = FALSE;
4732
a0857625cadb [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4705
diff changeset
1758
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1759 /* Server stored icon stuff */
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1760 if (info->iconcsumlen) {
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1761 char *b16, *saved_b16;
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1762 struct buddy *b;
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1763
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1764 memcpy(bi->iconcsum, info->iconcsum, info->iconcsumlen);
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1765 bi->iconcsumlen = info->iconcsumlen;
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1766 b16 = tobase16(bi->iconcsum, bi->iconcsumlen);
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1767 b = gaim_find_buddy(gc->account, info->sn);
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1768 saved_b16 = gaim_buddy_get_setting(b, "icon_checksum");
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1769 if (!b16 || !saved_b16 || strcmp(b16, saved_b16)) {
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1770 GSList *cur = od->requesticon;
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1771 while (cur && aim_sncmp((char *)cur->data, info->sn))
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1772 cur = cur->next;
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1773 if (!cur) {
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1774 od->requesticon = g_slist_append(od->requesticon, strdup(normalize(info->sn)));
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1775 if (od->icontimer)
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1776 g_source_remove(od->icontimer);
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1777 od->icontimer = g_timeout_add(500, gaim_icon_timerfunc, gc);
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1778 }
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1779 }
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1780 free(saved_b16);
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1781 free(b16);
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1782 }
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
1783
5149
b873dc695388 [gaim-migrate @ 5513]
Mark Doliner <markdoliner@pidgin.im>
parents: 5146
diff changeset
1784 serv_got_update(gc, info->sn, 1, ill_just_write_my_own_damn_round_function(info->warnlevel/10.0), signon, time_idle, type);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1785
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1786 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1787 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1788
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1789 static int gaim_parse_offgoing(aim_session_t *sess, aim_frame_t *fr, ...) {
4739
7263e3ceab43 [gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents: 4738
diff changeset
1790 struct gaim_connection *gc = sess->aux_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1791 va_list ap;
4739
7263e3ceab43 [gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents: 4738
diff changeset
1792 aim_userinfo_t *info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1793
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1794 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
1795 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1796 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1797
4732
a0857625cadb [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4705
diff changeset
1798 serv_got_update(gc, info->sn, 0, 0, 0, 0, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1799
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1800 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1801 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1802
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1803 static void cancel_direct_im(struct ask_direct *d) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1804 debug_printf("Freeing DirectIM prompts.\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1805
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1806 g_free(d->sn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1807 g_free(d);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1808 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1809
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1810 static void oscar_odc_callback(gpointer data, gint source, GaimInputCondition condition) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1811 struct direct_im *dim = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1812 struct gaim_connection *gc = dim->gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1813 struct oscar_data *od = gc->proto_data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
1814 struct gaim_conversation *cnv;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1815 char buf[256];
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1816 struct sockaddr name;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1817 socklen_t name_len = 1;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1818
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1819 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1820 g_free(dim);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1821 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1822 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1823
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1824 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1825 g_free(dim);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1826 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1827 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1828
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
1829 dim->conn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1830 aim_conn_completeconnect(od->sess, dim->conn);
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
1831 if (!(cnv = gaim_find_conversation(dim->name)))
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
1832 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
1833
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1834 /* 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
1835 if (getpeername(source, &name, &name_len) == 0) {
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1836 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
1837 dim->connected = TRUE;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
1838 gaim_conversation_write(cnv, NULL, buf, -1, WFLAG_SYSTEM, time(NULL));
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1839 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1840 od->direct_ims = g_slist_append(od->direct_ims, dim);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1841
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1842 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
1843 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1844
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1845 /* BBB */
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1846 /*
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1847 * 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
1848 * 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
1849 * 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
1850 */
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1851 static int oscar_sendfile_estblsh(aim_session_t *sess, aim_frame_t *fr, ...) {
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1852 struct gaim_connection *gc = sess->aux_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1853 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1854 struct gaim_xfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1855 struct aim_oft_info *oft_info;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1856 va_list ap;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1857 aim_conn_t *conn, *listenerconn;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1858
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1859 debug_printf("AAA - in oscar_sendfile_estblsh\n");
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1860 va_start(ap, fr);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1861 conn = va_arg(ap, aim_conn_t *);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1862 listenerconn = va_arg(ap, aim_conn_t *);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1863 va_end(ap);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1864
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1865 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, listenerconn)))
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1866 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1867
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1868 if (!(oft_info = xfer->data))
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1869 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1870
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1871 /* Stop watching listener conn; watch transfer conn instead */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1872 gaim_input_remove(xfer->watcher);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1873 aim_conn_kill(sess, &listenerconn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1874
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1875 oft_info->conn = conn;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1876 xfer->fd = oft_info->conn->fd;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1877
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1878 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
1879 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
1880 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
1881
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1882 /* 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
1883 aim_oft_sendheader(sess, AIM_CB_OFT_PROMPT, oft_info);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1884
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1885 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1886 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1887
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1888 /*
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1889 * This is the gaim callback passed to proxy_connect when connecting to another AIM
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1890 * user in order to transfer a file.
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1891 */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1892 static void oscar_sendfile_connected(gpointer data, gint source, GaimInputCondition condition) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1893 struct gaim_xfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1894 struct aim_oft_info *oft_info;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1895
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1896 debug_printf("AAA - in oscar_sendfile_connected\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1897 if (!(xfer = data))
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1898 return;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1899 if (!(oft_info = xfer->data))
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1900 return;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1901 if (source < 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1902 return;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1903
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1904 xfer->fd = source;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1905 oft_info->conn->fd = source;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1906
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1907 aim_conn_completeconnect(oft_info->sess, oft_info->conn);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1908 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
1909
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1910 /* 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
1911 aim_im_sendch2_sendfile_accept(oft_info->sess, oft_info);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1912
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1913 return;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1914 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1915
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1916 /*
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1917 * 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
1918 * 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
1919 * 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
1920 * get like totally ready to like, receive the file, kay?
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1921 */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1922 static int oscar_sendfile_prompt(aim_session_t *sess, aim_frame_t *fr, ...) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1923 struct gaim_connection *gc = sess->aux_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1924 struct oscar_data *od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1925 struct gaim_xfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1926 struct aim_oft_info *oft_info;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1927 va_list ap;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1928 aim_conn_t *conn;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1929 fu8_t *cookie;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1930 struct aim_fileheader_t *fh;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1931
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1932 debug_printf("AAA - in oscar_sendfile_prompt\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1933 va_start(ap, fr);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1934 conn = va_arg(ap, aim_conn_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1935 cookie = va_arg(ap, fu8_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1936 fh = va_arg(ap, struct aim_fileheader_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1937 va_end(ap);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1938
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1939 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn)))
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1940 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1941
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1942 if (!(oft_info = xfer->data))
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1943 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1944
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1945 /* We want to stop listening with a normal thingy */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1946 gaim_input_remove(xfer->watcher);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1947 xfer->watcher = 0;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1948
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1949 /* They sent us some information about the file they're sending */
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1950 memcpy(&oft_info->fh, fh, sizeof(*fh));
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1951
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1952 /* Fill in the cookie */
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1953 memcpy(&oft_info->fh.bcookie, oft_info->cookie, 8);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1954
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1955 /* 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
1956 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
1957 gaim_xfer_start(xfer, xfer->fd, NULL, 0);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1958
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1959 return 0;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1960 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1961
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1962 /*
4657
24c70a9dec22 [gaim-migrate @ 4968]
Mark Doliner <markdoliner@pidgin.im>
parents: 4656
diff changeset
1963 * 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
1964 * 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
1965 */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1966 static int oscar_sendfile_ack(aim_session_t *sess, aim_frame_t *fr, ...) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1967 struct gaim_connection *gc = sess->aux_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1968 struct oscar_data *od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1969 struct gaim_xfer *xfer;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1970 va_list ap;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1971 aim_conn_t *conn;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1972 fu8_t *cookie;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1973 struct aim_fileheader_t *fh;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1974
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1975 debug_printf("AAA - in oscar_sendfile_ack\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1976 va_start(ap, fr);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1977 conn = va_arg(ap, aim_conn_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1978 cookie = va_arg(ap, fu8_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1979 fh = va_arg(ap, struct aim_fileheader_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1980 va_end(ap);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1981
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1982 if (!(xfer = oscar_find_xfer_by_cookie(od->file_transfers, cookie)))
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1983 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1984
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1985 /* We want to stop listening with a normal thingy */
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1986 gaim_input_remove(xfer->watcher);
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1987 xfer->watcher = 0;
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1988
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1989 gaim_xfer_start(xfer, xfer->fd, NULL, 0);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1990
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1991 return 0;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1992 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1993
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1994 /*
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1995 * 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
1996 * so we can close our direct connection and what not.
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1997 */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1998 static int oscar_sendfile_done(aim_session_t *sess, aim_frame_t *fr, ...) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1999 struct gaim_connection *gc = sess->aux_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2000 struct oscar_data *od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2001 struct gaim_xfer *xfer;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2002 va_list ap;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2003 aim_conn_t *conn;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2004 fu8_t *cookie;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2005 struct aim_fileheader_t *fh;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
2006
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
2007 debug_printf("AAA - in oscar_sendfile_done\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2008 va_start(ap, fr);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2009 conn = va_arg(ap, aim_conn_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2010 cookie = va_arg(ap, fu8_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2011 fh = va_arg(ap, struct aim_fileheader_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2012 va_end(ap);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2013
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2014 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn)))
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2015 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2016
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
2017 xfer->fd = conn->fd;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2018 gaim_xfer_end(xfer);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2019
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2020 return 0;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2021 }
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2022
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2023 static void accept_direct_im(struct ask_direct *d) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2024 struct gaim_connection *gc = d->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2025 struct oscar_data *od;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2026 struct direct_im *dim;
2945
839d36ea8de6 [gaim-migrate @ 2958]
Rob Flynn <gaim@robflynn.com>
parents: 2943
diff changeset
2027 char *host; int port = 4443;
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
2028 int i, rc;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2029
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2030 if (!g_slist_find(connections, gc)) {
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2031 cancel_direct_im(d);
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2032 return;
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2033 }
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2034
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2035 od = (struct oscar_data *)gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2036 debug_printf("Accepted DirectIM.\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2037
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2038 dim = find_direct_im(od, d->sn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2039 if (dim) {
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
2040 cancel_direct_im(d); /* 40 */
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2041 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2042 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2043 dim = g_new0(struct direct_im, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2044 dim->gc = d->gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2045 g_snprintf(dim->name, sizeof dim->name, "%s", d->sn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2046
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2047 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
2048 if (!dim->conn) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2049 g_free(dim);
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
2050 cancel_direct_im(d);
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2051 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2052 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2053
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2054 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
2055 gaim_odc_incoming, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2056 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
2057 gaim_odc_typing, 0);
3033
1f078ab46e76 [gaim-migrate @ 3046]
Sean Egan <seanegan@pidgin.im>
parents: 3031
diff changeset
2058 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
2059 gaim_update_ui, 0);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2060 for (i = 0; i < (int)strlen(d->ip); i++) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2061 if (d->ip[i] == ':') {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2062 port = atoi(&(d->ip[i+1]));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2063 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2064 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2065 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2066 host = g_strndup(d->ip, i);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2067 dim->conn->status |= AIM_CONN_STATUS_INPROGRESS;
4634
c4318fc60090 [gaim-migrate @ 4941]
Nathan Walp <nwalp@pidgin.im>
parents: 4628
diff changeset
2068 rc = proxy_connect(gc->account, host, port, oscar_odc_callback, dim);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2069 g_free(host);
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
2070 if (rc < 0) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2071 aim_conn_kill(od->sess, &dim->conn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2072 g_free(dim);
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
2073 cancel_direct_im(d);
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2074 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2075 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2076
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
2077 cancel_direct_im(d);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2078
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2079 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2080 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2081
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2082 static int incomingim_chan1(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch1_args *args) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2083 struct gaim_connection *gc = sess->aux_data;
3600
776215788f43 [gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents: 3596
diff changeset
2084 struct oscar_data *od = gc->proto_data;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2085 char *tmp;
2273
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2249
diff changeset
2086 int flags = 0;
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
2087 int convlen;
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
2088 GError *err = NULL;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2089 struct buddyinfo *bi;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2090
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2091 bi = g_hash_table_lookup(od->buddyinfo, normalize(userinfo->sn));
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2092 if (!bi) {
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2093 bi = g_new0(struct buddyinfo, 1);
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2094 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
2095 }
2273
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2249
diff changeset
2096
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2249
diff changeset
2097 if (args->icbmflags & AIM_IMFLAGS_AWAY)
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2249
diff changeset
2098 flags |= IM_FLAG_AWAY;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2099
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2100 if (args->icbmflags & AIM_IMFLAGS_TYPINGNOT)
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2101 bi->typingnot = TRUE;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2102 else
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2103 bi->typingnot = FALSE;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2104
4380
c7c7beab8e56 [gaim-migrate @ 4646]
Mark Doliner <markdoliner@pidgin.im>
parents: 4374
diff changeset
2105 if ((args->icbmflags & AIM_IMFLAGS_HASICON) && (args->iconlen) && (args->iconsum) && (args->iconstamp)) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2106 debug_printf("%s has an icon\n", userinfo->sn);
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2107 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
2108 bi->ico_need = TRUE;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2109 bi->ico_len = args->iconlen;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2110 bi->ico_csum = args->iconsum;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2111 bi->ico_time = args->iconstamp;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2112 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2113 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2114
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
2115 if (gc->account->iconfile[0] && (args->icbmflags & AIM_IMFLAGS_BUDDYREQ)) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2116 FILE *file;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2117 struct stat st;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2118
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
2119 if (!stat(gc->account->iconfile, &st)) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2120 char *buf = g_malloc(st.st_size);
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
2121 file = fopen(gc->account->iconfile, "rb");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2122 if (file) {
2603
0c39616168c9 [gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2597
diff changeset
2123 int len = fread(buf, 1, st.st_size, file);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2124 debug_printf("Sending buddy icon to %s (%d bytes, %lu reported)\n",
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2125 userinfo->sn, len, st.st_size);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2126 aim_im_sendch2_icon(sess, userinfo->sn, buf, st.st_size,
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2127 st.st_mtime, aimutil_iconsum(buf, st.st_size));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2128 fclose(file);
2336
43d65c408209 [gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2315
diff changeset
2129 } else
43d65c408209 [gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2315
diff changeset
2130 debug_printf("Can't open buddy icon file!\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2131 g_free(buf);
2336
43d65c408209 [gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2315
diff changeset
2132 } else
43d65c408209 [gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2315
diff changeset
2133 debug_printf("Can't stat buddy icon file!\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2134 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2135
4662
740f32459759 [gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents: 4657
diff changeset
2136 debug_printf("Character set is %hu %hu\n", args->charset, args->charsubset);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2137 if (args->icbmflags & AIM_IMFLAGS_UNICODE) {
3722
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
2138 /* This message is marked as UNICODE, so we have to
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
2139 * 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
2140 * This conversion should *never* fail, if it does it
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
2141 * means that either the incoming ICBM is corrupted or
4662
740f32459759 [gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents: 4657
diff changeset
2142 * there is something we don't understand about it.
740f32459759 [gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents: 4657
diff changeset
2143 * For the record, AIM Unicode is big-endian UCS-2 */
740f32459759 [gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents: 4657
diff changeset
2144
740f32459759 [gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents: 4657
diff changeset
2145 debug_printf("Received UNICODE IM\n");
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2146
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2147 if (!args->msg || !args->msglen)
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2148 return 1;
4641
bcc6f5e3018a [gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
2149
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
2150 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
2151 if (err) {
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
2152 debug_printf("Unicode IM conversion: %s\n", err->message);
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
2153 tmp = strdup(_("(There was an error receiving this message)"));
4800
b8a226b0ddca [gaim-migrate @ 5120]
Ethan Blanton <elb@pidgin.im>
parents: 4799
diff changeset
2154 g_error_free(err);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2155 }
3722
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
2156 } else {
3850
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
2157 /* 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
2158 * unflagged messages, which are ASCII. That's OK because
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
2159 * ASCII is a strict subset of ISO-8859-1; this should
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
2160 * help with compatibility with old, broken versions of
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
2161 * gaim (everything before 0.60) and other broken clients
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
2162 * that will happily send ISO-8859-1 without marking it as
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
2163 * such */
4662
740f32459759 [gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents: 4657
diff changeset
2164 if (args->icbmflags & AIM_IMFLAGS_ISO_8859_1)
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2165 debug_printf("Received ISO-8859-1 IM\n");
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2166
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2167 if (!args->msg || !args->msglen)
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2168 return 1;
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2169
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
2170 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
2171 if (err) {
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
2172 debug_printf("ISO-8859-1 IM conversion: %s\n", err->message);
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
2173 tmp = strdup(_("(There was an error receiving this message)"));
4800
b8a226b0ddca [gaim-migrate @ 5120]
Ethan Blanton <elb@pidgin.im>
parents: 4799
diff changeset
2174 g_error_free(err);
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
2175 }
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
2176 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2177
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
2178 /* strip_linefeed(tmp); */
2856
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2833
diff changeset
2179 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
2180 g_free(tmp);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2181
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2182 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2183 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2184
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2185 static int incomingim_chan2(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch2_args *args) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2186 struct gaim_connection *gc = sess->aux_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2187 struct oscar_data *od = gc->proto_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2188
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2189 if (!args)
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2190 return 0;
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2191
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2192 debug_printf("rendezvous with %s, status is %hu\n", userinfo->sn, args->status);
2869
3165d3aff6c0 [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
2193
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2194 if (args->reqclass & AIM_CAPS_CHAT) {
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2195 char *name;
4120
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
2196 int *exch;
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2197 GList *m = NULL;
4120
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
2198
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2199 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
2200 return 1;
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2201 name = extract_name(args->info.chat.roominfo.name);
4120
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
2202 exch = g_new0(int, 1);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2203 m = g_list_append(m, g_strdup(name ? name : args->info.chat.roominfo.name));
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2204 *exch = args->info.chat.roominfo.exchange;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2205 m = g_list_append(m, exch);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2206 serv_got_chat_invite(gc,
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2207 name ? name : args->info.chat.roominfo.name,
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2208 userinfo->sn,
2869
3165d3aff6c0 [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
2209 (char *)args->msg,
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2210 m);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2211 if (name)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2212 g_free(name);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2213 } else if (args->reqclass & AIM_CAPS_SENDFILE) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2214 /* BBB */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2215 if (args->status == AIM_RENDEZVOUS_PROPOSE) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2216 /* Someone wants to send a file (or files) to us */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2217 struct gaim_xfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2218 struct aim_oft_info *oft_info;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2219
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2220 if (!args->cookie || !args->port || !args->verifiedip ||
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2221 !args->info.sendfile.filename || !args->info.sendfile.totsize ||
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
2222 !args->info.sendfile.totfiles || !args->reqclass) {
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
2223 debug_printf("%s tried to send you a file with incomplete information.\n", userinfo->sn);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2224 if (args->proxyip)
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2225 debug_printf("IP for a proxy server was given. Gaim does not support this yet.\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2226 return 1;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
2227 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2228
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2229 if (args->info.sendfile.subtype == AIM_OFT_SUBTYPE_SEND_DIR) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2230 /* 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
2231 * directory -- remove the star and trailing slash so we dont save
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2232 * directories that look like 'dirname\*' -- arl */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2233 char *tmp = strrchr(args->info.sendfile.filename, '\\');
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2234 if (tmp && (tmp[1] == '*')) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2235 tmp[0] = '\0';
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2236 }
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2237 }
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2238
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2239 /* Build the file transfer handle */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2240 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
2241 xfer->remote_ip = g_strdup(args->verifiedip);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2242 xfer->remote_port = args->port;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2243 gaim_xfer_set_filename(xfer, args->info.sendfile.filename);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2244 gaim_xfer_set_size(xfer, args->info.sendfile.totsize);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2245
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2246 /* Create the oscar-specific data */
5163
c4e7e5cde47d [gaim-migrate @ 5527]
Mark Doliner <markdoliner@pidgin.im>
parents: 5149
diff changeset
2247 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
2248 if (args->proxyip)
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2249 oft_info->proxyip = g_strdup(args->proxyip);
4898
285e9ff6eeb8 [gaim-migrate @ 5230]
Mark Doliner <markdoliner@pidgin.im>
parents: 4889
diff changeset
2250 if (args->verifiedip)
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2251 oft_info->verifiedip = g_strdup(args->verifiedip);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2252 xfer->data = oft_info;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2253
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2254 /* Setup our I/O op functions */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2255 gaim_xfer_set_init_fnc(xfer, oscar_xfer_init);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2256 gaim_xfer_set_start_fnc(xfer, oscar_xfer_start);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2257 gaim_xfer_set_end_fnc(xfer, oscar_xfer_end);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
2258 gaim_xfer_set_cancel_send_fnc(xfer, oscar_xfer_cancel_send);
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
2259 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
2260 gaim_xfer_set_ack_fnc(xfer, oscar_xfer_ack);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2261
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2262 /*
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2263 * 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
2264 * probably make it apply to all ch2 messages.
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2265 */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2266
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2267 /* Keep track of this transfer for later */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2268 od->file_transfers = g_slist_append(od->file_transfers, xfer);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2269
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2270 /* Now perform the request */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2271 gaim_xfer_request(xfer);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2272 } else if (args->status == AIM_RENDEZVOUS_CANCEL) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2273 /* The other user wants to cancel a file transfer */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2274 struct gaim_xfer *xfer;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2275 debug_printf("AAA - File transfer canceled by remote user\n");
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2276 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
2277 gaim_xfer_cancel_remote(xfer);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2278 } else if (args->status == AIM_RENDEZVOUS_ACCEPT) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2279 /*
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2280 * This gets sent by the receiver of a file
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2281 * as they connect directly to us. If we don't
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2282 * get this, then maybe a third party connected
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2283 * to us, and we shouldn't send them anything.
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2284 */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2285 } else {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2286 debug_printf("unknown rendezvous status!\n");
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2287 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2288 } else if (args->reqclass & AIM_CAPS_GETFILE) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2289 } else if (args->reqclass & AIM_CAPS_VOICE) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2290 } else if (args->reqclass & AIM_CAPS_BUDDYICON) {
4799
9b612e91f725 [gaim-migrate @ 5119]
Nathan Walp <nwalp@pidgin.im>
parents: 4798
diff changeset
2291 set_icon_data(gc, userinfo->sn, args->info.icon.icon,
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2292 args->info.icon.length);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2293 } else if (args->reqclass & AIM_CAPS_IMIMAGE) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2294 struct ask_direct *d = g_new0(struct ask_direct, 1);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2295 char buf[256];
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2296
4212
1a596d7f28ae [gaim-migrate @ 4449]
Brandon Scott
parents: 4207
diff changeset
2297 if (!args->verifiedip) {
4650
5b2338bb19fd [gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents: 4649
diff changeset
2298 debug_printf("directim kill blocked (%s)\n", userinfo->sn);
5b2338bb19fd [gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents: 4649
diff changeset
2299 return 1;
4212
1a596d7f28ae [gaim-migrate @ 4449]
Brandon Scott
parents: 4207
diff changeset
2300 }
1a596d7f28ae [gaim-migrate @ 4449]
Brandon Scott
parents: 4207
diff changeset
2301
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2302 debug_printf("%s received direct im request from %s (%s)\n",
2869
3165d3aff6c0 [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
2303 gc->username, userinfo->sn, args->verifiedip);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2304
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2305 d->gc = gc;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2306 d->sn = g_strdup(userinfo->sn);
2869
3165d3aff6c0 [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
2307 strncpy(d->ip, args->verifiedip, sizeof(d->ip));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2308 memcpy(d->cookie, args->cookie, 8);
4650
5b2338bb19fd [gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents: 4649
diff changeset
2309 g_snprintf(buf, sizeof buf, _("%s has just asked to directly connect to %s"), userinfo->sn, gc->username);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
2310 do_ask_dialog(buf, _("This requires a direct connection between the two computers and is necessary for IM Images. Because your IP address will be revealed, this may be considered a privacy risk."), d, _("Connect"), accept_direct_im, _("Cancel"), cancel_direct_im, my_protocol->handle, FALSE);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2311 } else {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2312 debug_printf("Unknown reqclass %hu\n", args->reqclass);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2313 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2314
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2315 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2316 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2317
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2318 /*
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2319 * Authorization Functions
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2320 * 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
2321 * methods of authorization (SSI and old-school channel 4 ICBM)
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2322 */
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2323 /* When you ask other people for authorization */
4337
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
2324 static void gaim_auth_request(struct name_data *data, char *msg) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2325 struct gaim_connection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2326
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2327 if (g_slist_find(connections, gc)) {
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2328 struct oscar_data *od = gc->proto_data;
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
2329 struct buddy *buddy = gaim_find_buddy(gc->account, data->name);
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
2330 struct group *group = gaim_find_buddys_group(buddy);
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2331 if (buddy && group) {
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2332 debug_printf("ssi: adding buddy %s to group %s\n", buddy->name, group->name);
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
2333 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
2334 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
2335 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
2336 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2337 }
4337
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
2338 }
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
2339
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
2340 static void gaim_auth_request_msgprompt(struct name_data *data) {
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
2341 do_prompt_dialog(_("Authorization Request Message:"), _("Please authorize me!"), data, gaim_auth_request, gaim_free_name_data);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2342 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2343
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2344 static void gaim_auth_dontrequest(struct name_data *data) {
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2345 struct gaim_connection *gc = data->gc;
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2346
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2347 if (g_slist_find(connections, gc)) {
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2348 /* struct oscar_data *od = gc->proto_data; */
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2349 /* XXX - Take the buddy out of our buddy list */
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2350 }
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2351
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2352 gaim_free_name_data(data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2353 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2354
5136
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
2355 static void gaim_auth_sendrequest(struct gaim_connection *gc, const char *name) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2356 struct name_data *data = g_new(struct name_data, 1);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2357 struct buddy *buddy;
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2358 gchar *dialog_msg, *nombre;
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2359
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
2360 buddy = gaim_find_buddy(gc->account, name);
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
2361 if (buddy && (gaim_get_buddy_alias_only(buddy)))
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
2362 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
2363 else
4830
d0f1945b27b7 [gaim-migrate @ 5155]
Mark Doliner <markdoliner@pidgin.im>
parents: 4829
diff changeset
2364 nombre = NULL;
d0f1945b27b7 [gaim-migrate @ 5155]
Mark Doliner <markdoliner@pidgin.im>
parents: 4829
diff changeset
2365
d0f1945b27b7 [gaim-migrate @ 5155]
Mark Doliner <markdoliner@pidgin.im>
parents: 4829
diff changeset
2366 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
2367 data->gc = gc;
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2368 data->name = g_strdup(name);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2369 data->nick = NULL;
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
2370 do_ask_dialog(_("Request Authorization"), dialog_msg, data, _("Request Authorization"), gaim_auth_request_msgprompt, _("Cancel"), gaim_auth_dontrequest, my_protocol->handle, FALSE);
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2371
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2372 g_free(dialog_msg);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2373 g_free(nombre);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2374 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
2375
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2376 /* When other people ask you for authorization */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2377 static void gaim_auth_grant(struct name_data *data) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2378 struct gaim_connection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2379
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2380 if (g_slist_find(connections, gc)) {
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2381 struct oscar_data *od = gc->proto_data;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
2382 #ifdef NOSSI
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2383 struct buddy *buddy;
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2384 gchar message;
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2385 message = 0;
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
2386 buddy = gaim_find_buddy(gc->account, data->name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2387 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
2388 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
2389 #else
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
2390 aim_ssi_sendauthreply(od->sess, data->name, 0x01, NULL);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2391 #endif
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2392 }
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2393
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2394 gaim_free_name_data(data);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2395 }
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2396
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2397 /* When other people ask you for authorization */
4337
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
2398 static void gaim_auth_dontgrant(struct name_data *data, char *msg) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2399 struct gaim_connection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2400
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2401 if (g_slist_find(connections, gc)) {
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2402 struct oscar_data *od = gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2403 #ifdef NOSSI
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2404 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
2405 #else
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
2406 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
2407 #endif
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2408 }
4337
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
2409 }
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
2410
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
2411 static void gaim_auth_dontgrant_msgprompt(struct name_data *data) {
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
2412 do_prompt_dialog(_("Authorization Denied Message:"), _("No reason given."), data, gaim_auth_dontgrant, gaim_free_name_data);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2413 }
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2414
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2415 /* When someone sends you contacts */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2416 static void gaim_icq_contactadd(struct name_data *data) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2417 struct gaim_connection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2418
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2419 if (g_slist_find(connections, gc)) {
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2420 show_add_buddy(gc, data->name, NULL, data->nick);
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2421 }
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
2422
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2423 gaim_free_name_data(data);
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2424 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2425
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2426 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) {
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2427 struct gaim_connection *gc = sess->aux_data;
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2428 gchar **msg1, **msg2;
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2429 GError *err = NULL;
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2430 int i;
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2431
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2432 if (!args->type || !args->msg || !args->uin)
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2433 return 1;
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2434
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2435 debug_printf("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
2436
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2437 /* 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
2438 msg1 = g_strsplit(args->msg, "\376", 0);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2439 msg2 = (gchar **)g_malloc(10*sizeof(gchar *)); /* XXX - 10 is a guess */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2440 for (i=0; msg1[i]; i++) {
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2441 strip_linefeed(msg1[i]);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2442 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
2443 if (err) {
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2444 debug_printf("Error converting a string from ISO-8859-1 to UTF-8 in oscar ICBM channel 4 parsing\n");
4800
b8a226b0ddca [gaim-migrate @ 5120]
Ethan Blanton <elb@pidgin.im>
parents: 4799
diff changeset
2445 g_error_free(err);
b8a226b0ddca [gaim-migrate @ 5120]
Ethan Blanton <elb@pidgin.im>
parents: 4799
diff changeset
2446 }
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2447 }
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2448 msg2[i] = NULL;
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2449
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
2450 switch (args->type) {
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2451 case 0x01: { /* MacICQ message or basic offline message */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2452 if (i >= 1) {
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2453 gchar *uin = g_strdup_printf("%lu", args->uin);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2454 if (t) { /* This is an offline message */
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2455 /* I think this timestamp is in UTC, or something */
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2456 serv_got_im(gc, uin, msg2[0], 0, t, -1);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2457 } else { /* This is a message from MacICQ/Miranda */
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2458 serv_got_im(gc, uin, msg2[0], 0, time(NULL), -1);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2459 }
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2460 g_free(uin);
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2461 }
3316
43bb95f6167a [gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents: 3279
diff changeset
2462 } break;
43bb95f6167a [gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents: 3279
diff changeset
2463
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2464 case 0x04: { /* Someone sent you a URL */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2465 if (i >= 2) {
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2466 gchar *uin = g_strdup_printf("%lu", args->uin);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2467 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
2468 serv_got_im(gc, uin, message, 0, time(NULL), -1);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2469 g_free(uin);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2470 g_free(message);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2471 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2472 } break;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2473
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2474 case 0x06: { /* Someone requested authorization */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2475 if (i >= 6) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2476 struct name_data *data = g_new(struct name_data, 1);
4337
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
2477 gchar *dialog_msg = g_strdup_printf(_("The user %lu wants to add you to their buddy list for the following reason:\n%s"), args->uin, msg2[5] ? msg2[5] : _("No reason given."));
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2478 debug_printf("Received an authorization request from UIN %lu\n", args->uin);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2479 data->gc = gc;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2480 data->name = g_strdup_printf("%lu", args->uin);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2481 data->nick = NULL;
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
2482 do_ask_dialog(_("Authorization Request"), dialog_msg, data, _("Authorize"), gaim_auth_grant, _("Deny"), gaim_auth_dontgrant_msgprompt, my_protocol->handle, FALSE);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2483 g_free(dialog_msg);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2484 }
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2485 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2486
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2487 case 0x07: { /* Someone has denied you authorization */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2488 if (i >= 1) {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2489 gchar *dialog_msg = g_strdup_printf(_("The user %lu 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."));
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2490 do_error_dialog(_("ICQ authorization denied."), dialog_msg, GAIM_INFO);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2491 g_free(dialog_msg);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2492 }
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2493 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2494
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2495 case 0x08: { /* Someone has granted you authorization */
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2496 gchar *dialog_msg = g_strdup_printf(_("The user %lu has granted your request to add them to your contact list."), args->uin);
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
2497 do_error_dialog("ICQ authorization accepted.", dialog_msg, GAIM_INFO);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2498 g_free(dialog_msg);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2499 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2500
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
2501 case 0x09: { /* Message from the Godly ICQ server itself, I think */
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
2502 if (i >= 5) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
2503 gchar *dialog_msg = g_strdup_printf(_("You have received a special message\n\nFrom: %s [%s]\n%s"), msg2[0], msg2[3], msg2[5]);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
2504 do_error_dialog("ICQ Server Message", dialog_msg, GAIM_INFO);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
2505 g_free(dialog_msg);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
2506 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
2507 } break;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
2508
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2509 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
2510 if (i >= 6) {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2511 gchar *dialog_msg = g_strdup_printf(_("You have received an ICQ page\n\nFrom: %s [%s]\n%s"), msg2[0], msg2[3], msg2[5]);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2512 do_error_dialog("ICQ Page", dialog_msg, GAIM_INFO);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2513 g_free(dialog_msg);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2514 }
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2515 } break;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2516
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2517 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
2518 if (i >= 6) {
4308
8eefe9f67895 [gaim-migrate @ 4562]
Mark Doliner <markdoliner@pidgin.im>
parents: 4303
diff changeset
2519 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]);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2520 do_error_dialog("ICQ Email", dialog_msg, GAIM_INFO);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2521 g_free(dialog_msg);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2522 }
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2523 } break;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2524
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2525 case 0x12: {
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2526 /* 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
2527 /* Someone added you to their contact list? */
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2528 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2529
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2530 case 0x13: { /* Someone has sent you some ICQ contacts */
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2531 int i, num;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2532 gchar **text;
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2533 text = g_strsplit(args->msg, "\376", 0);
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2534 if (text) {
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2535 num = 0;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2536 for (i=0; i<strlen(text[0]); i++)
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2537 num = num*10 + text[0][i]-48;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2538 for (i=0; i<num; i++) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2539 struct name_data *data = g_new(struct name_data, 1);
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
2540 gchar *message = g_strdup_printf(_("ICQ user %lu 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
2541 data->gc = gc;
4790
765a98790ede [gaim-migrate @ 5110]
Mark Doliner <markdoliner@pidgin.im>
parents: 4785
diff changeset
2542 data->name = g_strdup(text[i*2+1]);
765a98790ede [gaim-migrate @ 5110]
Mark Doliner <markdoliner@pidgin.im>
parents: 4785
diff changeset
2543 data->nick = g_strdup(text[i*2+2]);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
2544 do_ask_dialog(message, _("Do you want to add this contact to your Buddy List?"), data, _("Add"), gaim_icq_contactadd, _("Decline"), gaim_free_name_data, my_protocol->handle, FALSE);
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2545 g_free(message);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2546 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2547 g_strfreev(text);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2548 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2549 } break;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2550
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2551 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
2552 /* This is boring and silly. */
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2553 } break;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2554
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2555 default: {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2556 debug_printf("Received a channel 4 message of unknown type (type 0x%02hhx).\n", args->type);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2557 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2558 }
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2559
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2560 g_strfreev(msg1);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2561 g_strfreev(msg2);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2562
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2563 return 1;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2564 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2565
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2566 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
2567 fu16_t channel;
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2568 int ret = 0;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2569 aim_userinfo_t *userinfo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2570 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2571
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2572 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2573 channel = (fu16_t)va_arg(ap, unsigned int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2574 userinfo = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2575
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2576 switch (channel) {
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2577 case 1: { /* standard message */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2578 struct aim_incomingim_ch1_args *args;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2579 args = va_arg(ap, struct aim_incomingim_ch1_args *);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2580 ret = incomingim_chan1(sess, fr->conn, userinfo, args);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2581 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2582
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2583 case 2: { /* rendevous */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2584 struct aim_incomingim_ch2_args *args;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2585 args = va_arg(ap, struct aim_incomingim_ch2_args *);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2586 ret = incomingim_chan2(sess, fr->conn, userinfo, args);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2587 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2588
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2589 case 4: { /* ICQ */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2590 struct aim_incomingim_ch4_args *args;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2591 args = va_arg(ap, struct aim_incomingim_ch4_args *);
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2592 ret = incomingim_chan4(sess, fr->conn, userinfo, args, 0);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2593 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2594
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2595 default: {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2596 debug_printf("ICBM received on unsupported channel (channel 0x%04hx).", channel);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2597 } break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2598 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2599
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2600 va_end(ap);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2601
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2602 return ret;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2603 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2604
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2605 static int gaim_parse_misses(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2606 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2607 fu16_t chan, nummissed, reason;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2608 aim_userinfo_t *userinfo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2609 char buf[1024];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2610
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2611 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2612 chan = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2613 userinfo = va_arg(ap, aim_userinfo_t *);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2614 nummissed = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2615 reason = (fu16_t)va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2616 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2617
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2618 switch(reason) {
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2619 case 0:
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2620 /* Invalid (0) */
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2621 g_snprintf(buf,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2622 sizeof(buf),
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2623 ngettext(
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2624 "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
2625 "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
2626 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2627 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2628 userinfo->sn);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2629 break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2630 case 1:
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2631 /* Message too large */
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2632 g_snprintf(buf,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2633 sizeof(buf),
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2634 ngettext(
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2635 "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
2636 "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
2637 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2638 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2639 userinfo->sn);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2640 break;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2641 case 2:
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2642 /* Rate exceeded */
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2643 g_snprintf(buf,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2644 sizeof(buf),
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2645 ngettext(
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2646 "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
2647 "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
2648 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2649 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2650 userinfo->sn);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2651 break;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2652 case 3:
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2653 /* Evil Sender */
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2654 g_snprintf(buf,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2655 sizeof(buf),
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2656 ngettext(
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2657 "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
2658 "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
2659 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2660 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2661 userinfo->sn);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2662 break;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2663 case 4:
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2664 /* Evil Receiver */
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2665 g_snprintf(buf,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2666 sizeof(buf),
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2667 ngettext(
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2668 "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
2669 "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
2670 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2671 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2672 userinfo->sn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2673 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2674 default:
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2675 g_snprintf(buf,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2676 sizeof(buf),
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2677 ngettext(
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
2678 "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
2679 "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
2680 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2681 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
2682 userinfo->sn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2683 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2684 }
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
2685 do_error_dialog(buf, NULL, GAIM_ERROR);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2686
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2687 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2688 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2689
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2690 static char *gaim_icq_status(int state) {
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2691 /* 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
2692 if (state & AIM_ICQ_STATE_CHAT)
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
2693 return g_strdup_printf(_("Free For Chat"));
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2694 else if (state & AIM_ICQ_STATE_DND)
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
2695 return g_strdup_printf(_("Do Not Disturb"));
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2696 else if (state & AIM_ICQ_STATE_OUT)
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
2697 return g_strdup_printf(_("Not Available"));
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2698 else if (state & AIM_ICQ_STATE_BUSY)
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
2699 return g_strdup_printf(_("Occupied"));
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2700 else if (state & AIM_ICQ_STATE_AWAY)
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
2701 return g_strdup_printf(_("Away"));
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2702 else if (state & AIM_ICQ_STATE_WEBAWARE)
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
2703 return g_strdup_printf(_("Web Aware"));
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2704 else if (state & AIM_ICQ_STATE_INVISIBLE)
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
2705 return g_strdup_printf(_("Invisible"));
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2706 else
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
2707 return g_strdup_printf(_("Online"));
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2708 }
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2709
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2710 static int gaim_parse_clientauto_ch2(aim_session_t *sess, const char *who, fu16_t reason, const char *cookie) {
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2711 struct gaim_connection *gc = sess->aux_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2712 struct oscar_data *od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2713
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2714 /* BBB */
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2715 switch (reason) {
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2716 case 3: { /* Decline sendfile. */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2717 struct gaim_xfer *xfer;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2718 debug_printf("AAA - Other user declined file transfer\n");
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2719 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
2720 gaim_xfer_cancel_remote(xfer);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2721 } break;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2722
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2723 default: {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2724 debug_printf("Received an unknown rendezvous client auto-response from %s. Type 0x%04hx\n", who, reason);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2725 }
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2726
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2727 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2728
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2729 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2730 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2731
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2732 static int gaim_parse_clientauto_ch4(aim_session_t *sess, char *who, fu16_t reason, fu32_t state, char *msg) {
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2733 struct gaim_connection *gc = sess->aux_data;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2734
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2735 switch(reason) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2736 case 0x0003: { /* Reply from an ICQ status message request */
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2737 char *status_msg = gaim_icq_status(state);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2738 char *dialog_msg, **splitmsg;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2739 struct oscar_data *od = gc->proto_data;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2740 GSList *l = od->evilhack;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2741 gboolean evilhack = FALSE;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2742
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2743 /* 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
2744 splitmsg = g_strsplit(msg, "\r\n", 0);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2745
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2746 /* 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
2747 * 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
2748 while (l) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2749 char *x = l->data;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2750 if (!strcmp(x, normalize(who))) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2751 evilhack = TRUE;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2752 g_free(x);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2753 od->evilhack = g_slist_remove(od->evilhack, x);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2754 break;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2755 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2756 l = l->next;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2757 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2758
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2759 if (evilhack)
4344
01db0d9079ea [gaim-migrate @ 4609]
Mark Doliner <markdoliner@pidgin.im>
parents: 4342
diff changeset
2760 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
2761 else
4344
01db0d9079ea [gaim-migrate @ 4609]
Mark Doliner <markdoliner@pidgin.im>
parents: 4342
diff changeset
2762 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
2763 g_show_info_text(gc, who, 2, dialog_msg, NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2764
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2765 g_free(status_msg);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2766 g_free(dialog_msg);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2767 g_strfreev(splitmsg);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2768 } break;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2769
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2770 default: {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2771 debug_printf("Received an unknown client auto-response from %s. Type 0x%04hx\n", who, reason);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2772 } break;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2773 } /* end of switch */
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2774
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2775 return 0;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2776 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2777
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2778 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
2779 va_list ap;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2780 fu16_t chan, reason;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2781 char *who;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2782
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2783 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2784 chan = (fu16_t)va_arg(ap, unsigned int);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2785 who = va_arg(ap, char *);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2786 reason = (fu16_t)va_arg(ap, unsigned int);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2787
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
2788 if (chan == 0x0002) { /* File transfer declined */
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2789 char *cookie = va_arg(ap, char *);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2790 return gaim_parse_clientauto_ch2(sess, who, reason, cookie);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
2791 } else if (chan == 0x0004) { /* ICQ message */
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2792 fu32_t state = 0;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2793 char *msg = NULL;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2794 if (reason == 0x0003) {
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2795 state = va_arg(ap, fu32_t);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2796 msg = va_arg(ap, char *);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2797 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2798 return gaim_parse_clientauto_ch4(sess, who, reason, state, msg);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2799 }
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
2800
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2801 va_end(ap);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2802
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2803 return 1;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2804 }
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2805
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2806 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
2807 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2808 fu16_t reason;
2865
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
2809 char *m;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2810
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2811 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
2812 reason = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2813 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2814
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2815 debug_printf("snac threw error (reason 0x%04hx: %s)\n", reason,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2816 (reason < msgerrreasonlen) ? msgerrreason[reason] : "unknown");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2817
2865
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
2818 m = g_strdup_printf(_("SNAC threw error: %s\n"),
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
2819 reason < msgerrreasonlen ? gettext(msgerrreason[reason]) : _("Unknown error"));
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
2820 do_error_dialog(m, NULL, GAIM_ERROR);
2865
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
2821 g_free(m);
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
2822
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2823 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2824 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2825
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2826 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
2827 #if 0
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2828 struct gaim_connection *gc = sess->aux_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2829 struct oscar_data *od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2830 struct gaim_xfer *xfer;
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
2831 #endif
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2832 va_list ap;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2833 fu16_t reason;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2834 char *data, *buf;
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
2835
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2836 va_start(ap, fr);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2837 reason = (fu16_t)va_arg(ap, unsigned int);
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2838 data = va_arg(ap, char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2839 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2840
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2841 debug_printf("Message error with data %s and reason %hu\n", data, reason);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2842
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2843 /* BBB */
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
2844 #if 0
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2845 /* If this was a file transfer request, data is a cookie */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2846 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
2847 gaim_xfer_cancel_remote(xfer);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2848 return 1;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2849 }
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
2850 #endif
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2851
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2852 /* Data is assumed to be the destination sn */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2853 buf = g_strdup_printf(_("Your message to %s did not get sent:"), data);
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
2854 do_error_dialog(buf, (reason < msgerrreasonlen) ? gettext(msgerrreason[reason]) : _("No reason given."), GAIM_ERROR);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2855 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2856
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2857 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2858 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2859
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2860 static int gaim_parse_mtn(aim_session_t *sess, aim_frame_t *fr, ...) {
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2861 struct gaim_connection *gc = sess->aux_data;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2862 va_list ap;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2863 fu16_t type1, type2;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2864 char *sn;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2865
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2866 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
2867 type1 = (fu16_t) va_arg(ap, unsigned int);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2868 sn = va_arg(ap, char *);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
2869 type2 = (fu16_t) va_arg(ap, unsigned int);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2870 va_end(ap);
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2871
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2872 switch (type2) {
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2873 case 0x0000: { /* Text has been cleared */
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2874 serv_got_typing_stopped(gc, sn);
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2875 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2876
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2877 case 0x0001: { /* Paused typing */
3768
bb6cc9d30511 [gaim-migrate @ 3907]
Nathan Walp <nwalp@pidgin.im>
parents: 3752
diff changeset
2878 serv_got_typing(gc, sn, 0, TYPED);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2879 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2880
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2881 case 0x0002: { /* Typing */
3768
bb6cc9d30511 [gaim-migrate @ 3907]
Nathan Walp <nwalp@pidgin.im>
parents: 3752
diff changeset
2882 serv_got_typing(gc, sn, 0, TYPING);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2883 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2884
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2885 default: {
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
2886 printf("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
2887 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2888 }
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2889
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2890 return 1;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2891 }
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2892
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2893 static int gaim_parse_locerr(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2894 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2895 char *destn;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2896 fu16_t reason;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2897 char buf[1024];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2898
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2899 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
2900 reason = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2901 destn = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2902 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2903
3574
b4839ec94817 [gaim-migrate @ 3673]
Luke Schierer <lschiere@pidgin.im>
parents: 3572
diff changeset
2904 snprintf(buf, sizeof(buf), _("User information for %s unavailable:"), destn);
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
2905 do_error_dialog(buf, (reason < msgerrreasonlen) ? gettext(msgerrreason[reason]) : _("No reason given."), GAIM_ERROR);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2906
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2907 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2908 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2909
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2910 static char *images(int flags) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2911 static char buf[1024];
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
2912 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
2913 (flags & AIM_FLAG_ACTIVEBUDDY) ? "<IMG SRC=\"ab_icon.gif\">" : "",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2914 (flags & AIM_FLAG_UNCONFIRMED) ? "<IMG SRC=\"dt_icon.gif\">" : "",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2915 (flags & AIM_FLAG_AOL) ? "<IMG SRC=\"aol_icon.gif\">" : "",
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
2916 (flags & AIM_FLAG_ICQ) ? "<IMG SRC=\"icq_icon.gif\">" : "",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2917 (flags & AIM_FLAG_ADMINISTRATOR) ? "<IMG SRC=\"admin_icon.gif\">" : "",
3079
e55c9a9cc4fc [gaim-migrate @ 3093]
Mark Doliner <markdoliner@pidgin.im>
parents: 3074
diff changeset
2918 (flags & AIM_FLAG_FREE) ? "<IMG SRC=\"free_icon.gif\">" : "",
e55c9a9cc4fc [gaim-migrate @ 3093]
Mark Doliner <markdoliner@pidgin.im>
parents: 3074
diff changeset
2919 (flags & AIM_FLAG_WIRELESS) ? "<IMG SRC=\"wireless_icon.gif\">" : "");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2920 return buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2921 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2922
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
2923
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2924 static char *caps_string(guint caps)
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2925 {
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2926 static char buf[512], *tmp;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2927 int count = 0, i = 0;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2928 guint bit = 1;
4742
dc3735abd7d3 [gaim-migrate @ 5057]
Mark Doliner <markdoliner@pidgin.im>
parents: 4741
diff changeset
2929
dc3735abd7d3 [gaim-migrate @ 5057]
Mark Doliner <markdoliner@pidgin.im>
parents: 4741
diff changeset
2930 if (!caps) {
4744
c3a5a15c01f7 [gaim-migrate @ 5059]
Sean Egan <seanegan@pidgin.im>
parents: 4743
diff changeset
2931 return NULL;
4743
21bf5b69519d [gaim-migrate @ 5058]
Mark Doliner <markdoliner@pidgin.im>
parents: 4742
diff changeset
2932 } else while (bit <= 0x20000) {
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2933 if (bit & caps) {
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2934 switch (bit) {
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2935 case 0x1:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2936 tmp = _("Buddy Icon");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2937 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2938 case 0x2:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2939 tmp = _("Voice");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2940 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2941 case 0x4:
4898
285e9ff6eeb8 [gaim-migrate @ 5230]
Mark Doliner <markdoliner@pidgin.im>
parents: 4889
diff changeset
2942 tmp = _("Direct IM");
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2943 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2944 case 0x8:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2945 tmp = _("Chat");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2946 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2947 case 0x10:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2948 tmp = _("Get File");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2949 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2950 case 0x20:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2951 tmp = _("Send File");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2952 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2953 case 0x40:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2954 case 0x200:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2955 tmp = _("Games");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2956 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2957 case 0x80:
4898
285e9ff6eeb8 [gaim-migrate @ 5230]
Mark Doliner <markdoliner@pidgin.im>
parents: 4889
diff changeset
2958 tmp = _("Add-Ins");
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2959 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2960 case 0x100:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2961 tmp = _("Send Buddy List");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2962 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2963 case 0x400:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2964 tmp = _("EveryBuddy Bug");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2965 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2966 case 0x800:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2967 tmp = _("AP User");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2968 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2969 case 0x1000:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2970 tmp = _("ICQ RTF");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2971 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2972 case 0x2000:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2973 tmp = _("Nihilist");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2974 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2975 case 0x4000:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2976 tmp = _("ICQ Server Relay");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2977 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2978 case 0x8000:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2979 tmp = _("ICQ Unknown");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2980 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2981 case 0x10000:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2982 tmp = _("Trillian Encryption");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2983 break;
4742
dc3735abd7d3 [gaim-migrate @ 5057]
Mark Doliner <markdoliner@pidgin.im>
parents: 4741
diff changeset
2984 case 0x20000:
dc3735abd7d3 [gaim-migrate @ 5057]
Mark Doliner <markdoliner@pidgin.im>
parents: 4741
diff changeset
2985 tmp = _("ICQ UTF8");
dc3735abd7d3 [gaim-migrate @ 5057]
Mark Doliner <markdoliner@pidgin.im>
parents: 4741
diff changeset
2986 break;
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2987 default:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2988 tmp = NULL;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2989 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2990 }
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2991 if (tmp)
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2992 i += g_snprintf(buf + i, sizeof(buf) - i, "%s%s", (count ? ", " : ""),
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2993 tmp);
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2994 count++;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2995 }
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2996 bit <<= 1;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2997 }
4744
c3a5a15c01f7 [gaim-migrate @ 5059]
Sean Egan <seanegan@pidgin.im>
parents: 4743
diff changeset
2998 return buf;
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2999 }
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3000
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3001 static int gaim_parse_user_info(aim_session_t *sess, aim_frame_t *fr, ...) {
4791
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3002 struct gaim_connection *gc = sess->aux_data;
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3003 struct oscar_data *od = gc->proto_data;
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3004 char header[BUF_LONG];
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3005 GSList *l = od->evilhack;
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3006 gboolean evilhack = FALSE;
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3007 gchar *membersince = NULL, *onlinesince = NULL, *idle = NULL;
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3008 va_list ap;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3009 aim_userinfo_t *info;
4791
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3010 fu16_t infotype;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3011 char *text_enc = NULL, *text = NULL, *utf8 = NULL;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3012 int text_len;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3013
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3014 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3015 info = va_arg(ap, aim_userinfo_t *);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3016 infotype = (fu16_t) va_arg(ap, unsigned int);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3017 text_enc = va_arg(ap, char *);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3018 text = va_arg(ap, char *);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3019 text_len = va_arg(ap, int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3020 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3021
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3022 if (text_len > 0) {
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
3023 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
3024 utf8 = g_strdup(_("<i>Unable to display information because it was sent in an unknown encoding.</i>"));
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3025 debug_printf("Encountered an unknown encoding while parsing userinfo\n");
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3026 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3027 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3028
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3029 if (info->present & AIM_USERINFO_PRESENT_ONLINESINCE) {
4834
80bc171a5236 [gaim-migrate @ 5159]
Luke Schierer <lschiere@pidgin.im>
parents: 4832
diff changeset
3030 onlinesince = g_strdup_printf(_("Online Since : <b>%s</b><br>\n"),
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3031 asctime(localtime(&info->onlinesince)));
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3032 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3033
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3034 if (info->present & AIM_USERINFO_PRESENT_MEMBERSINCE) {
4834
80bc171a5236 [gaim-migrate @ 5159]
Luke Schierer <lschiere@pidgin.im>
parents: 4832
diff changeset
3035 membersince = g_strdup_printf(_("Member Since : <b>%s</b><br>\n"),
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3036 asctime(localtime(&info->membersince)));
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3037 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3038
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3039 if (info->present & AIM_USERINFO_PRESENT_IDLE) {
4426
27e671cf2854 [gaim-migrate @ 4701]
Mark Doliner <markdoliner@pidgin.im>
parents: 4423
diff changeset
3040 gchar *itime = sec_to_text(info->idletime*60);
4834
80bc171a5236 [gaim-migrate @ 5159]
Luke Schierer <lschiere@pidgin.im>
parents: 4832
diff changeset
3041 idle = g_strdup_printf(_("Idle : <b>%s</b>"), itime);
4426
27e671cf2854 [gaim-migrate @ 4701]
Mark Doliner <markdoliner@pidgin.im>
parents: 4423
diff changeset
3042 g_free(itime);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3043 } else
4834
80bc171a5236 [gaim-migrate @ 5159]
Luke Schierer <lschiere@pidgin.im>
parents: 4832
diff changeset
3044 idle = g_strdup(_("Idle: <b>Active</b>"));
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3045
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3046 g_snprintf(header, sizeof header,
4791
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3047 _("Username : <b>%s</b> %s <br>\n"
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3048 "Warning Level : <b>%d %%</b><br>\n"
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3049 "%s"
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3050 "%s"
4344
01db0d9079ea [gaim-migrate @ 4609]
Mark Doliner <markdoliner@pidgin.im>
parents: 4342
diff changeset
3051 "%s\n"
4791
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3052 "<hr>\n"),
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3053 info->sn, images(info->flags),
5149
b873dc695388 [gaim-migrate @ 5513]
Mark Doliner <markdoliner@pidgin.im>
parents: 5146
diff changeset
3054 ill_just_write_my_own_damn_round_function(info->warnlevel/10.0),
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3055 onlinesince ? onlinesince : "",
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3056 membersince ? membersince : "",
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3057 idle ? idle : "");
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3058
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3059 g_free(onlinesince);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3060 g_free(membersince);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3061 g_free(idle);
2773
3f711c709792 [gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2768
diff changeset
3062
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3063 while (l) {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3064 char *x = l->data;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3065 if (!strcmp(x, normalize(info->sn))) {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3066 evilhack = TRUE;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3067 g_free(x);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3068 od->evilhack = g_slist_remove(od->evilhack, x);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3069 break;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3070 }
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3071 l = l->next;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3072 }
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3073
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3074 if (infotype == AIM_GETINFO_AWAYMESSAGE) {
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3075 if (evilhack) {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3076 g_show_info_text(gc, info->sn, 2,
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3077 header,
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3078 (utf8 && *utf8) ? away_subs(utf8, gc->username) :
4207
24e4a2d77476 [gaim-migrate @ 4443]
Sean Egan <seanegan@pidgin.im>
parents: 4201
diff changeset
3079 _("<i>User has no away message</i>"), NULL);
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3080 } else {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3081 g_show_info_text(gc, info->sn, 0,
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3082 header,
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3083 (utf8 && *utf8) ? away_subs(utf8, gc->username) : NULL,
4791
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
3084 (utf8 && *utf8) ? "<hr>" : NULL,
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3085 NULL);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3086 }
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3087 } else if (infotype == AIM_GETINFO_CAPABILITIES) {
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3088 g_show_info_text(gc, info->sn, 2,
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3089 header,
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3090 "<i>", _("Client Capabilities: "),
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3091 caps_string(info->capabilities),
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3092 "</i>",
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3093 NULL);
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3094 } else {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3095 g_show_info_text(gc, info->sn, 1,
5197
ab4d919050d7 [gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents: 5167
diff changeset
3096 (utf8 && *utf8) ? away_subs(utf8, gc->username) : _("<i>No Information Provided</i>"),
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3097 NULL);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3098 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3099
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3100 g_free(utf8);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3101
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3102 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3103 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3104
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3105 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
3106 char *msg;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3107 fu16_t id;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3108 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3109
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3110 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3111 id = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3112 msg = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3113 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3114
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3115 debug_printf("MOTD: %s (%hu)\n", msg ? msg : "Unknown", id);
2092
f56061012e3c [gaim-migrate @ 2102]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
3116 if (id < 4)
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3117 do_error_dialog(_("Your AIM connection may be lost."), NULL, GAIM_WARNING);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3118
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3119 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3120 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3121
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3122 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
3123 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3124 fu16_t type;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3125 struct gaim_connection *gc = sess->aux_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3126 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3127
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3128 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3129 type = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3130
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3131 switch(type) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3132 case 0x0002: {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3133 fu8_t maxrooms;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3134 struct aim_chat_exchangeinfo *exchanges;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3135 int exchangecount, i;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3136
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3137 maxrooms = (fu8_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3138 exchangecount = va_arg(ap, int);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3139 exchanges = va_arg(ap, struct aim_chat_exchangeinfo *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3140
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3141 debug_printf("chat info: Chat Rights:\n");
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3142 debug_printf("chat info: \tMax Concurrent Rooms: %hhd\n", maxrooms);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3143 debug_printf("chat info: \tExchange List: (%d total)\n", exchangecount);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3144 for (i = 0; i < exchangecount; i++)
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3145 debug_printf("chat info: \t\t%hu %s\n", exchanges[i].number, exchanges[i].name ? exchanges[i].name : "");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3146 while (od->create_rooms) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3147 struct create_room *cr = od->create_rooms->data;
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
3148 debug_printf("creating room %s\n", cr->name);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
3149 aim_chatnav_createroom(sess, fr->conn, cr->name, cr->exchange);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
3150 g_free(cr->name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3151 od->create_rooms = g_slist_remove(od->create_rooms, cr);
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
3152 g_free(cr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3153 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3154 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3155 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3156 case 0x0008: {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3157 char *fqcn, *name, *ck;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3158 fu16_t instance, flags, maxmsglen, maxoccupancy, unknown, exchange;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3159 fu8_t createperms;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3160 fu32_t createtime;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3161
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3162 fqcn = va_arg(ap, char *);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3163 instance = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3164 exchange = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3165 flags = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3166 createtime = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3167 maxmsglen = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3168 maxoccupancy = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3169 createperms = (fu8_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3170 unknown = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3171 name = va_arg(ap, char *);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3172 ck = va_arg(ap, char *);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3173
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3174 debug_printf("created room: %s %hu %hu %hu %lu %hu %hu %hhu %hu %s %s\n",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3175 fqcn,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3176 exchange, instance, flags,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3177 createtime,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3178 maxmsglen, maxoccupancy, createperms, unknown,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3179 name, ck);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3180 aim_chat_join(od->sess, od->conn, exchange, ck, instance);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3181 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3182 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3183 default:
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3184 debug_printf("chatnav info: unknown type (%04hx)\n", type);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3185 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3186 }
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3187
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3188 va_end(ap);
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3189
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3190 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3191 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3192
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3193 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
3194 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3195 int count, i;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3196 aim_userinfo_t *info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3197 struct gaim_connection *g = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3198
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3199 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3200
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3201 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3202 count = va_arg(ap, int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3203 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3204 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3205
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3206 c = find_oscar_chat_by_conn(g, fr->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3207 if (!c)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3208 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3209
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3210 for (i = 0; i < count; i++)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
3211 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
3212
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3213 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3214 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3215
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3216 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
3217 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3218 int count, i;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3219 aim_userinfo_t *info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3220 struct gaim_connection *g = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3221
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3222 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3223
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3224 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3225 count = va_arg(ap, int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3226 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3227 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3228
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3229 c = find_oscar_chat_by_conn(g, fr->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3230 if (!c)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3231 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3232
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3233 for (i = 0; i < count; i++)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
3234 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
3235
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3236 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3237 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3238
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3239 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
3240 va_list ap;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3241 aim_userinfo_t *userinfo;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3242 struct aim_chat_roominfo *roominfo;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3243 char *roomname;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3244 int usercount;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3245 char *roomdesc;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3246 fu16_t unknown_c9, unknown_d2, unknown_d5, maxmsglen, maxvisiblemsglen;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3247 fu32_t creationtime;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3248 struct gaim_connection *gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3249 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
3250
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3251 va_start(ap, fr);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3252 roominfo = va_arg(ap, struct aim_chat_roominfo *);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3253 roomname = va_arg(ap, char *);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3254 usercount= va_arg(ap, int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3255 userinfo = va_arg(ap, aim_userinfo_t *);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3256 roomdesc = va_arg(ap, char *);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3257 unknown_c9 = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3258 creationtime = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3259 maxmsglen = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3260 unknown_d2 = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3261 unknown_d5 = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3262 maxvisiblemsglen = (fu16_t)va_arg(ap, unsigned int);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3263 va_end(ap);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3264
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3265 debug_printf("inside chat_info_update (maxmsglen = %hu, maxvislen = %hu)\n",
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3266 maxmsglen, maxvisiblemsglen);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3267
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3268 ccon->maxlen = maxmsglen;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3269 ccon->maxvis = maxvisiblemsglen;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3270
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3271 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3272 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3273
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3274 static int gaim_chat_incoming_msg(aim_session_t *sess, aim_frame_t *fr, ...) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3275 struct gaim_connection *gc = sess->aux_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3276 va_list ap;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3277 aim_userinfo_t *info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3278 char *msg;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3279 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
3280
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3281 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3282 info = va_arg(ap, aim_userinfo_t *);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3283 msg = va_arg(ap, char *);
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3284 va_end(ap);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3285
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3286 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
3287
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3288 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3289 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3290
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3291 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
3292 va_list ap;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3293 struct gaim_connection *gc = sess->aux_data;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3294 struct aim_emailinfo *emailinfo;
3725
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
3295 int havenewmail;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3296
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3297 va_start(ap, fr);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3298 emailinfo = va_arg(ap, struct aim_emailinfo *);
3725
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
3299 havenewmail = va_arg(ap, int);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3300 va_end(ap);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3301
3725
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
3302 if (emailinfo) {
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
3303 if (emailinfo->unread) {
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
3304 if (havenewmail)
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
3305 connection_has_mail(gc, emailinfo->nummsgs ? emailinfo->nummsgs : -1, NULL, NULL, emailinfo->url);
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
3306 } else
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3307 connection_has_mail(gc, 0, NULL, NULL, emailinfo->url);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3308 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3309
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3310 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3311 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3312
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3313 static int gaim_icon_error(aim_session_t *sess, aim_frame_t *fr, ...) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3314 struct gaim_connection *gc = sess->aux_data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3315 struct oscar_data *od = gc->proto_data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3316 char *sn;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3317
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3318 sn = od->requesticon->data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3319 debug_printf("removing %s from hash table\n", sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3320 od->requesticon = g_slist_remove(od->requesticon, sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3321 free(sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3322
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3323 if (od->icontimer)
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3324 g_source_remove(od->icontimer);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3325 od->icontimer = g_timeout_add(500, gaim_icon_timerfunc, gc);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3326
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3327 return 1;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3328 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3329
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3330 static int gaim_icon_parseicon(aim_session_t *sess, aim_frame_t *fr, ...) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3331 struct gaim_connection *gc = sess->aux_data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3332 struct oscar_data *od = gc->proto_data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3333 GSList *cur;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3334 va_list ap;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3335 char *sn;
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
3336 fu8_t *iconcsum, *icon;
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
3337 fu16_t iconcsumlen, iconlen;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3338
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3339 va_start(ap, fr);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3340 sn = va_arg(ap, char *);
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
3341 iconcsum = va_arg(ap, fu8_t *);
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
3342 iconcsumlen = va_arg(ap, int);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3343 icon = va_arg(ap, fu8_t *);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3344 iconlen = va_arg(ap, int);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3345 va_end(ap);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3346
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
3347 if (iconlen > 0) {
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
3348 char *b16;
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
3349 struct buddy *b = gaim_find_buddy(gc->account, sn);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3350 set_icon_data(gc, sn, icon, iconlen);
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
3351 b16 = tobase16(iconcsum, iconcsumlen);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
3352 if (b16) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
3353 gaim_buddy_set_setting(b, "icon_checksum", b16);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
3354 gaim_blist_save();
5125
a0b0afd30c5e [gaim-migrate @ 5488]
Nathan Walp <nwalp@pidgin.im>
parents: 5068
diff changeset
3355 free(b16);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
3356 }
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
3357 }
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3358
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3359 cur = od->requesticon;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3360 while (cur) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3361 char *cursn = cur->data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3362 if (!aim_sncmp(cursn, sn)) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3363 od->requesticon = g_slist_remove(od->requesticon, cursn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3364 free(cursn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3365 cur = od->requesticon;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3366 } else
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3367 cur = cur->next;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3368 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3369
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3370 if (od->icontimer)
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3371 g_source_remove(od->icontimer);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3372 od->icontimer = g_timeout_add(250, gaim_icon_timerfunc, gc);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3373
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3374 return 1;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3375 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3376
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3377 static gboolean gaim_icon_timerfunc(gpointer data) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3378 struct gaim_connection *gc = data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3379 struct oscar_data *od = gc->proto_data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3380 struct buddyinfo *bi;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3381 aim_conn_t *conn;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3382
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3383 if (!od->requesticon) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3384 debug_printf("no more icons to request\n");
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3385 return FALSE;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3386 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3387
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3388 conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_ICON);
4823
e855589fb088 [gaim-migrate @ 5148]
Roald Dahl
parents: 4822
diff changeset
3389 if (!conn && !od->iconconnecting) {
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3390 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_ICON);
4823
e855589fb088 [gaim-migrate @ 5148]
Roald Dahl
parents: 4822
diff changeset
3391 od->iconconnecting = TRUE;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3392 return FALSE;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3393 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3394
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3395 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
3396 if (bi && (bi->iconcsumlen > 0)) {
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
3397 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
3398 return FALSE;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3399 } else {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3400 char *sn = od->requesticon->data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3401 od->requesticon = g_slist_remove(od->requesticon, sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3402 free(sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3403 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3404
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3405 return TRUE;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3406 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
3407
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3408 /*
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3409 * 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
3410 */
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3411 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
3412 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3413 fu16_t type;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3414 char *sn;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3415
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3416 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3417 type = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3418 sn = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3419 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3420
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3421 debug_printf("Sent message to %s.\n", sn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3422
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3423 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3424 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3425
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3426 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
3427 static const char *codes[5] = {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3428 "invalid",
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3429 "change",
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3430 "warning",
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3431 "limit",
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3432 "limit cleared",
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3433 };
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3434 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3435 fu16_t code, rateclass;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3436 fu32_t windowsize, clear, alert, limit, disconnect, currentavg, maxavg;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3437
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3438 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3439 code = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3440 rateclass= (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3441 windowsize = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3442 clear = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3443 alert = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3444 limit = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3445 disconnect = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3446 currentavg = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3447 maxavg = va_arg(ap, fu32_t);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3448 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3449
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3450 debug_printf("rate %s (param ID 0x%04hx): curavg = %lu, maxavg = %lu, alert at %lu, "
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3451 "clear warning at %lu, limit at %lu, disconnect at %lu (window size = %lu)\n",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3452 (code < 5) ? codes[code] : codes[0],
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3453 rateclass,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3454 currentavg, maxavg,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3455 alert, clear,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3456 limit, disconnect,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3457 windowsize);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3458
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3459 /* XXX fix these values */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3460 if (code == AIM_RATE_CODE_CHANGE) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3461 if (currentavg >= clear)
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3462 aim_conn_setlatency(fr->conn, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3463 } else if (code == AIM_RATE_CODE_WARNING) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3464 aim_conn_setlatency(fr->conn, windowsize/4);
2909
2935ea93dfe7 [gaim-migrate @ 2922]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2906
diff changeset
3465 } else if (code == AIM_RATE_CODE_LIMIT) {
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3466 do_error_dialog(_("Rate limiting error."),
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3467 _("The last message was not sent because you are over the rate limit. "
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3468 "Please wait 10 seconds and try again."), GAIM_ERROR);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3469 aim_conn_setlatency(fr->conn, windowsize/2);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3470 } else if (code == AIM_RATE_CODE_CLEARLIMIT) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3471 aim_conn_setlatency(fr->conn, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3472 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3473
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3474 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3475 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3476
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3477 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
3478 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3479 fu16_t newevil;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3480 aim_userinfo_t *userinfo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3481 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3482
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3483 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3484 newevil = (fu16_t) va_arg(ap, unsigned int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3485 userinfo = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3486 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3487
5149
b873dc695388 [gaim-migrate @ 5513]
Mark Doliner <markdoliner@pidgin.im>
parents: 5146
diff changeset
3488 serv_got_eviled(gc, (userinfo && userinfo->sn[0]) ? userinfo->sn : NULL, ill_just_write_my_own_damn_round_function(newevil/10.0));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3489
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3490 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3491 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3492
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3493 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
3494 va_list ap;
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3495 aim_userinfo_t *info;
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3496 struct gaim_connection *gc = sess->aux_data;
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3497
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3498 va_start(ap, fr);
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3499 info = va_arg(ap, aim_userinfo_t *);
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3500 va_end(ap);
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3501
5149
b873dc695388 [gaim-migrate @ 5513]
Mark Doliner <markdoliner@pidgin.im>
parents: 5146
diff changeset
3502 gc->evil = ill_just_write_my_own_damn_round_function(info->warnlevel/10.0);
4841
65cf779d4f49 [gaim-migrate @ 5166]
Mark Doliner <markdoliner@pidgin.im>
parents: 4838
diff changeset
3503
65cf779d4f49 [gaim-migrate @ 5166]
Mark Doliner <markdoliner@pidgin.im>
parents: 4838
diff changeset
3504 if (info->onlinesince)
65cf779d4f49 [gaim-migrate @ 5166]
Mark Doliner <markdoliner@pidgin.im>
parents: 4838
diff changeset
3505 gc->login_time_official = info->onlinesince;
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3506
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3507 return 1;
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3508 }
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3509
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3510 static int gaim_connerr(aim_session_t *sess, aim_frame_t *fr, ...) {
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3511 struct gaim_connection *gc = sess->aux_data;
4666
fd74a2faaf94 [gaim-migrate @ 4977]
Mark Doliner <markdoliner@pidgin.im>
parents: 4665
diff changeset
3512 struct oscar_data *od = gc->proto_data;
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3513 va_list ap;
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3514 fu16_t code;
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3515 char *msg;
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3516
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3517 va_start(ap, fr);
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3518 code = (fu16_t)va_arg(ap, int);
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3519 msg = va_arg(ap, char *);
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3520 va_end(ap);
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3521
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3522 debug_printf("Disconnected. Code is 0x%04x and msg is %s\n", code, msg);
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3523 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
3524 if (code == 0x0001) {
4652
2acc7c88ea6c [gaim-migrate @ 4963]
Sean Egan <seanegan@pidgin.im>
parents: 4651
diff changeset
3525 hide_login_progress_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
3526 } else {
4652
2acc7c88ea6c [gaim-migrate @ 4963]
Sean Egan <seanegan@pidgin.im>
parents: 4651
diff changeset
3527 hide_login_progress_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
3528 }
4666
fd74a2faaf94 [gaim-migrate @ 4977]
Mark Doliner <markdoliner@pidgin.im>
parents: 4665
diff changeset
3529 od->killme = TRUE;
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3530 }
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3531
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3532 return 1;
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3533 }
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
3534
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
3535 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
3536
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3537 aim_reqpersonalinfo(sess, fr->conn);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3538
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3539 #ifndef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3540 debug_printf("ssi: requesting ssi list\n");
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
3541 aim_ssi_reqrights(sess);
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
3542 aim_ssi_reqdata(sess, sess->ssi.timestamp, sess->ssi.numitems);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3543 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3544
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3545 aim_bos_reqlocaterights(sess, fr->conn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3546 aim_bos_reqbuddyrights(sess, fr->conn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3547 aim_im_reqparams(sess);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3548 aim_bos_reqrights(sess, fr->conn);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3549
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3550 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3551 aim_bos_setgroupperm(sess, fr->conn, AIM_FLAG_ALLUSERS);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3552 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
3553 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3554
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3555 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3556 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3557
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
3558 static int conninitdone_admin(aim_session_t *sess, aim_frame_t *fr, ...) {
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3559 struct gaim_connection *gc = sess->aux_data;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3560 struct oscar_data *od = gc->proto_data;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3561
2672
5c9b7617a1f3 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
3562 aim_clientready(sess, fr->conn);
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
3563 debug_printf("connected to admin\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3564
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3565 if (od->chpass) {
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3566 debug_printf("changing password\n");
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3567 aim_admin_changepasswd(sess, fr->conn, od->newp, od->oldp);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3568 g_free(od->oldp);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3569 od->oldp = NULL;
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3570 g_free(od->newp);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3571 od->newp = NULL;
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3572 od->chpass = FALSE;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3573 }
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3574 if (od->setnick) {
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3575 debug_printf("formatting screenname\n");
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3576 aim_admin_setnick(sess, fr->conn, od->newsn);
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3577 g_free(od->newsn);
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3578 od->newsn = NULL;
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3579 od->setnick = FALSE;
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3580 }
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3581 if (od->conf) {
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3582 debug_printf("confirming account\n");
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3583 aim_admin_reqconfirm(sess, fr->conn);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3584 od->conf = FALSE;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3585 }
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3586 if (od->reqemail) {
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3587 debug_printf("requesting email\n");
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3588 aim_admin_getinfo(sess, fr->conn, 0x0011);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3589 od->reqemail = FALSE;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3590 }
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3591 if (od->setemail) {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3592 debug_printf("setting email\n");
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3593 aim_admin_setemail(sess, fr->conn, od->email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3594 g_free(od->email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3595 od->setemail = FALSE;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3596 }
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3597
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3598 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3599 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3600
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3601 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
3602 struct aim_icbmparameters *params;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3603 va_list ap;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3604
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3605 va_start(ap, fr);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3606 params = va_arg(ap, struct aim_icbmparameters *);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3607 va_end(ap);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3608
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3609 /* XXX - evidently this crashes on solaris. i have no clue why
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3610 debug_printf("ICBM Parameters: maxchannel = %hu, default flags = 0x%08lx, max msg len = %hu, "
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3611 "max sender evil = %f, max receiver evil = %f, min msg interval = %lu\n",
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3612 params->maxchan, params->flags, params->maxmsglen,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3613 ((float)params->maxsenderwarn)/10.0, ((float)params->maxrecverwarn)/10.0,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3614 params->minmsginterval);
2427
761801814c88 [gaim-migrate @ 2440]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2421
diff changeset
3615 */
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3616
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3617 /* Maybe senderwarn and recverwarn should be user preferences... */
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3618 params->flags = 0x0000000b;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3619 params->maxmsglen = 8000;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3620 params->minmsginterval = 0;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3621
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3622 aim_im_setparams(sess, params);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3623
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3624 return 1;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3625 }
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3626
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3627 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
3628 {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3629 va_list ap;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3630 fu16_t maxsiglen;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3631 struct gaim_connection *gc = sess->aux_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3632 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3633 char *unicode;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3634 int unicode_len;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3635 fu32_t flags;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3636
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3637 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3638 maxsiglen = (fu16_t) va_arg(ap, int);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3639 va_end(ap);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3640
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3641 debug_printf("locate rights: max sig len = %d\n", maxsiglen);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3642
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3643 od->rights.maxsiglen = od->rights.maxawaymsglen = (guint)maxsiglen;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3644
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3645 if (od->icq)
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3646 aim_bos_setprofile(sess, fr->conn, NULL, NULL, 0, NULL, NULL, 0, caps_icq);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3647 else {
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
3648 flags = oscar_encoding_check (gc->account->user_info);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3649
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3650 if (flags == 0) {
4600
8f00fe7e4486 [gaim-migrate @ 4885]
Ethan Blanton <elb@pidgin.im>
parents: 4585
diff changeset
3651 aim_bos_setprofile(sess, fr->conn, "us-ascii", gc->account->user_info,
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
3652 strlen(gc->account->user_info), NULL, NULL, 0, caps_aim);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3653 } else {
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
3654 unicode = g_convert (gc->account->user_info, strlen(gc->account->user_info),
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3655 "UCS-2BE", "UTF-8", NULL, &unicode_len, NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3656 aim_bos_setprofile(sess, fr->conn, "unicode-2-0", unicode, unicode_len,
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3657 NULL, NULL, 0, caps_aim);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3658 g_free(unicode);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3659 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3660 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3661
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3662 return 1;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3663 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3664
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3665 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
3666 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3667 fu16_t maxbuddies, maxwatchers;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3668 struct gaim_connection *gc = sess->aux_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3669 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3670
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3671 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3672 maxbuddies = (fu16_t) va_arg(ap, unsigned int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3673 maxwatchers = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3674 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3675
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3676 debug_printf("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
3677
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3678 od->rights.maxbuddies = (guint)maxbuddies;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3679 od->rights.maxwatchers = (guint)maxwatchers;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3680
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3681 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3682 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3683
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3684 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
3685 fu16_t maxpermits, maxdenies;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3686 va_list ap;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3687 struct gaim_connection *gc = sess->aux_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3688 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3689
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3690 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3691 maxpermits = (fu16_t) va_arg(ap, unsigned int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3692 maxdenies = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3693 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3694
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3695 debug_printf("BOS rights: Max permit = %hu / Max deny = %hu\n", maxpermits, maxdenies);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3696
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3697 od->rights.maxpermits = (guint)maxpermits;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3698 od->rights.maxdenies = (guint)maxdenies;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3699
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3700 account_online(gc);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3701 serv_finish_login(gc);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3702
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3703 debug_printf("buddy list loaded\n");
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3704
2672
5c9b7617a1f3 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
3705 aim_clientready(sess, fr->conn);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3706
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3707 /* XXX - Should call aim_bos_setidle with 0x0000 */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3708
4664
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
3709 if (od->icq) {
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
3710 aim_icq_reqofflinemsgs(sess);
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
3711 aim_icq_hideip(sess);
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
3712 }
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3713
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3714 aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_CHATNAV);
4102
06290da3f88d [gaim-migrate @ 4317]
Mark Doliner <markdoliner@pidgin.im>
parents: 4076
diff changeset
3715 if (sess->authinfo->email)
06290da3f88d [gaim-migrate @ 4317]
Mark Doliner <markdoliner@pidgin.im>
parents: 4076
diff changeset
3716 aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_EMAIL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3717
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3718 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3719 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3720
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3721 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
3722 va_list ap;
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3723 struct aim_icq_offlinemsg *msg;
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3724 struct aim_incomingim_ch4_args args;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3725 time_t t;
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3726
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3727 va_start(ap, fr);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3728 msg = va_arg(ap, struct aim_icq_offlinemsg *);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3729 va_end(ap);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3730
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3731 debug_printf("Received offline message. Converting to channel 4 ICBM...\n");
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3732 args.uin = msg->sender;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3733 args.type = msg->type;
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3734 args.flags = msg->flags;
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3735 args.msglen = msg->msglen;
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3736 args.msg = msg->msg;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3737 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
3738 incomingim_chan4(sess, fr->conn, NULL, &args, t);
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3739
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3740 return 1;
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3741 }
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3742
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3743 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
3744 {
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3745 aim_icq_ackofflinemsgs(sess);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3746 return 1;
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3747 }
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3748
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
3749 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
3750 {
2773
3f711c709792 [gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2768
diff changeset
3751 struct gaim_connection *gc = sess->aux_data;
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3752 gchar *buf, *tmp, *utf8;
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
3753 gchar who[16];
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3754 va_list ap;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3755 struct aim_icq_info *info;
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3756
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3757 va_start(ap, fr);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3758 info = va_arg(ap, struct aim_icq_info *);
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3759 va_end(ap);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3760
4664
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
3761 if (!info->uin)
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
3762 return 0;
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
3763
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3764 g_snprintf(who, sizeof(who), "%lu", info->uin);
4820
1e869f00810b [gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents: 4819
diff changeset
3765 buf = g_strdup_printf("<b>%s</b> %s", _("UIN:"), who);
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3766 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
3767 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
3768 }
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3769 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
3770 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
3771 }
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3772 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
3773 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
3774 }
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3775 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
3776 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
3777 }
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
3778 if (info->numaddresses && info->email2) {
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
3779 int i;
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
3780 for (i = 0; i < info->numaddresses; i++) {
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3781 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
3782 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
3783 }
4625
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
3784 }
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
3785 }
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3786 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
3787 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
3788 }
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
3789 if (info->gender) {
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3790 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
3791 }
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
3792 if (info->birthyear || info->birthmonth || info->birthday) {
4627
4895653771a7 [gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents: 4625
diff changeset
3793 char date[30];
4895653771a7 [gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents: 4625
diff changeset
3794 struct tm tm;
4895653771a7 [gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents: 4625
diff changeset
3795 tm.tm_mday = (int)info->birthday;
4895653771a7 [gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents: 4625
diff changeset
3796 tm.tm_mon = (int)info->birthmonth-1;
4895653771a7 [gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents: 4625
diff changeset
3797 tm.tm_year = (int)info->birthyear-1900;
4628
446fbf2f42d2 [gaim-migrate @ 4919]
Sean Egan <seanegan@pidgin.im>
parents: 4627
diff changeset
3798 strftime(date, sizeof(date), "%x", &tm);
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3799 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
3800 }
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
3801 if (info->age) {
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
3802 char age[5];
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
3803 snprintf(age, sizeof(age), "%hhd", info->age);
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3804 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
3805 }
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3806 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
3807 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
3808 }
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3809 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
3810 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
3811 }
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
3812 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
3813 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
3814 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
3815 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
3816 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
3817 }
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3818 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
3819 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
3820 }
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3821 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
3822 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
3823 }
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3824 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
3825 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
3826 }
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
3827 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
3828 }
4641
bcc6f5e3018a [gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
3829 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
3830 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
3831 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
3832 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
3833 }
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3834 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
3835 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
3836 }
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3837 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
3838 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
3839 }
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3840 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
3841 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
3842 }
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
3843 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
3844 }
4641
bcc6f5e3018a [gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
3845 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
3846 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
3847 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
3848 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
3849 }
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3850 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
3851 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
3852 }
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3853 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
3854 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
3855 }
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
3856 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
3857 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
3858 }
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
3859 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
3860 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3861
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3862 g_show_info_text(gc, who, 2, buf, NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3863 g_free(buf);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3864
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3865 return 1;
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3866 }
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3867
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
3868 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
3869 {
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
3870 struct gaim_connection *gc = sess->aux_data;
4820
1e869f00810b [gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents: 4819
diff changeset
3871 gchar who[16], *utf8;
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
3872 struct buddy *b;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
3873 va_list ap;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
3874 struct aim_icq_info *info;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
3875
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
3876 va_start(ap, fr);
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
3877 info = va_arg(ap, struct aim_icq_info *);
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
3878 va_end(ap);
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
3879
4822
3badfb395070 [gaim-migrate @ 5147]
Mark Doliner <markdoliner@pidgin.im>
parents: 4821
diff changeset
3880 if (info->uin && info->nick && info->nick[0] && (utf8 = gaim_try_conv_to_utf8(info->nick))) {
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
3881 g_snprintf(who, sizeof(who), "%lu", info->uin);
4820
1e869f00810b [gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents: 4819
diff changeset
3882 serv_got_alias(gc, who, utf8);
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
3883 if ((b = gaim_find_buddy(gc->account, who))) {
4820
1e869f00810b [gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents: 4819
diff changeset
3884 gaim_buddy_set_setting(b, "servernick", utf8);
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
3885 gaim_blist_save();
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
3886 }
4820
1e869f00810b [gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents: 4819
diff changeset
3887 g_free(utf8);
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
3888 }
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
3889
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
3890 return 1;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
3891 }
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
3892
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3893 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
3894 {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3895 char *msg, *url;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3896 fu16_t wid, hei, delay;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3897 va_list ap;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3898
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3899 va_start(ap, fr);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3900 msg = va_arg(ap, char *);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3901 url = va_arg(ap, char *);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3902 wid = (fu16_t) va_arg(ap, int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3903 hei = (fu16_t) va_arg(ap, int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3904 delay = (fu16_t) va_arg(ap, int);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3905 va_end(ap);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3906
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3907 serv_got_popup(msg, url, wid, hei);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3908
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3909 return 1;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3910 }
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3911
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3912 static int gaim_parse_searchreply(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3913 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3914 char *address, *SNs;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3915 int i, num;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3916 char *buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3917 int at = 0, len;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3918
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3919 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3920 address = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3921 num = va_arg(ap, int);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3922 SNs = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3923 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3924
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3925 len = num * (MAXSNLEN + 1) + 1024;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3926 buf = g_malloc(len);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3927 at += g_snprintf(buf + at, len - at, "<B>%s has the following screen names:</B><BR>", address);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3928 for (i = 0; i < num; i++)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3929 at += g_snprintf(buf + at, len - at, "%s<BR>", &SNs[i * (MAXSNLEN + 1)]);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3930 g_show_info_text(NULL, NULL, 2, buf, NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3931 g_free(buf);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3932
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3933 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3934 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3935
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3936 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
3937 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3938 char *address;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3939 char buf[BUF_LONG];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3940
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3941 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3942 address = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3943 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3944
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3945 g_snprintf(buf, sizeof(buf), "No results found for email address %s", address);
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3946 do_error_dialog(buf, NULL, GAIM_ERROR);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3947
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3948 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3949 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3950
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3951 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
3952 fu16_t status;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3953 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3954 char msg[256];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3955 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3956
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3957 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3958 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
3959 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3960
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3961 debug_printf("account confirmation returned status 0x%04x (%s)\n", status,
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3962 status ? "unknown" : "email sent");
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3963 if (!status) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3964 g_snprintf(msg, sizeof(msg), "You should receive an email asking to confirm %s.",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3965 gc->username);
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
3966 do_error_dialog(_("Account Confirmation Requested"), msg, GAIM_INFO);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3967 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3968
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3969 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3970 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3971
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3972 static int gaim_info_change(aim_session_t *sess, aim_frame_t *fr, ...) {
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3973 struct gaim_connection *gc = sess->aux_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3974 va_list ap;
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3975 fu16_t perms, err;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3976 char *url, *sn, *email;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3977 int change;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3978
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3979 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3980 change = va_arg(ap, int);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3981 perms = (fu16_t) va_arg(ap, unsigned int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3982 err = (fu16_t) va_arg(ap, unsigned int);
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3983 url = va_arg(ap, char *);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3984 sn = va_arg(ap, char *);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3985 email = va_arg(ap, char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3986 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3987
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3988 debug_printf("account info: because of %s, perms=0x%04x, err=0x%04x, url=%s, sn=%s, email=%s\n",
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3989 change ? "change" : "request", perms, err, url, sn, email);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3990
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3991 if (err && url) {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3992 char *dialog_msg;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3993 char *dialog_top = g_strdup_printf(_("Error Changing Account Info"));
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3994 switch (err) {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3995 case 0x0001: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3996 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
3997 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3998 case 0x0006: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3999 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
4000 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4001 case 0x000b: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4002 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
4003 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4004 case 0x001d: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4005 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
4006 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4007 case 0x0021: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4008 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
4009 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4010 case 0x0023: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4011 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
4012 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4013 default: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4014 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unknown error."), err);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4015 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4016 }
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4017 do_error_dialog(dialog_top, dialog_msg, GAIM_ERROR);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4018 g_free(dialog_top);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4019 g_free(dialog_msg);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4020 return 1;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4021 }
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4022
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4023 if (sn) {
4585
cd29170cbc26 [gaim-migrate @ 4869]
Matthew Smith <matthew@smigs.co.uk>
parents: 4508
diff changeset
4024 char *dialog_msg = g_strdup_printf(_("Your screen name is currently formatted as follows:\n%s"), sn);
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
4025 do_error_dialog(_("Account Info"), dialog_msg, GAIM_INFO);
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4026 g_free(dialog_msg);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4027 }
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4028
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4029 if (email) {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4030 char *dialog_msg = g_strdup_printf(_("The email address for %s is %s"), gc->username, email);
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
4031 do_error_dialog(_("Account Info"), dialog_msg, GAIM_INFO);
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
4032 g_free(dialog_msg);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4033 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4034
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4035 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4036 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4037
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4038 static void oscar_keepalive(struct gaim_connection *gc) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4039 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4040 aim_flap_nop(od->sess, od->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4041 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4042
3001
9fc89391c8fa [gaim-migrate @ 3014]
Sean Egan <seanegan@pidgin.im>
parents: 3000
diff changeset
4043 static int oscar_send_typing(struct gaim_connection *gc, char *name, int typing) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4044 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4045 struct direct_im *dim = find_direct_im(od, name);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4046 if (dim)
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
4047 if (typing == TYPING)
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
4048 aim_odc_send_typing(od->sess, dim->conn, 0x0002);
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
4049 else if (typing == TYPED)
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
4050 aim_odc_send_typing(od->sess, dim->conn, 0x0001);
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
4051 else
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
4052 aim_odc_send_typing(od->sess, dim->conn, 0x0000);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4053 else {
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4054 struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, normalize(name));
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4055 if (bi && bi->typingnot) {
3596
94fcf584c358 [gaim-migrate @ 3698]
Mark Doliner <markdoliner@pidgin.im>
parents: 3595
diff changeset
4056 if (typing == TYPING)
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4057 aim_im_sendmtn(od->sess, 0x0001, name, 0x0002);
3596
94fcf584c358 [gaim-migrate @ 3698]
Mark Doliner <markdoliner@pidgin.im>
parents: 3595
diff changeset
4058 else if (typing == TYPED)
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4059 aim_im_sendmtn(od->sess, 0x0001, name, 0x0001);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4060 else
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4061 aim_im_sendmtn(od->sess, 0x0001, name, 0x0000);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4062 }
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4063 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4064 return 0;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4065 }
5136
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
4066 static void oscar_ask_direct_im(struct gaim_connection *gc, const char *name);
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
4067
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
4068 static int oscar_send_im(struct gaim_connection *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
4069 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4070 struct direct_im *dim = find_direct_im(od, name);
2303
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
4071 int ret = 0;
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4072 GError *err = NULL;
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
4073
4838
653f06ff2acf [gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents: 4834
diff changeset
4074 if (dim && dim->connected) {
653f06ff2acf [gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents: 4834
diff changeset
4075 /* If we're directly connected, send a direct IM */
653f06ff2acf [gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents: 4834
diff changeset
4076 /* 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
4077 if (imflags & IM_FLAG_AWAY)
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
4078 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
4079 else
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
4080 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
4081 } else if (len != -1) {
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
4082 /* Trying to send an IM image outside of a direct connection. */
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
4083 oscar_ask_direct_im(gc, name);
4838
653f06ff2acf [gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents: 4834
diff changeset
4084 ret = -ENOTCONN;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4085 } else {
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4086 struct buddyinfo *bi;
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4087 struct aim_sendimext_args args;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4088 struct stat st;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4089 int len;
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4090
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4091 bi = g_hash_table_lookup(od->buddyinfo, normalize(name));
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4092 if (!bi) {
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4093 bi = g_new0(struct buddyinfo, 1);
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4094 g_hash_table_insert(od->buddyinfo, g_strdup(normalize(name)), bi);
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4095 }
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4096
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4097 args.flags = AIM_IMFLAGS_ACK | AIM_IMFLAGS_CUSTOMFEATURES;
4665
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
4098 if (od->icq) {
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
4099 args.features = features_icq;
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
4100 args.featureslen = sizeof(features_icq);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4101 args.flags |= AIM_IMFLAGS_OFFLINE;
4665
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
4102 } else {
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
4103 args.features = features_aim;
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
4104 args.featureslen = sizeof(features_aim);
4972
3dd342b21444 [gaim-migrate @ 5306]
Mark Doliner <markdoliner@pidgin.im>
parents: 4969
diff changeset
4105
3dd342b21444 [gaim-migrate @ 5306]
Mark Doliner <markdoliner@pidgin.im>
parents: 4969
diff changeset
4106 if (imflags & IM_FLAG_AWAY)
3dd342b21444 [gaim-migrate @ 5306]
Mark Doliner <markdoliner@pidgin.im>
parents: 4969
diff changeset
4107 args.flags |= AIM_IMFLAGS_AWAY;
4665
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
4108 }
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4109
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4110 if (bi->ico_need) {
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4111 debug_printf("Sending buddy icon request with message\n");
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4112 args.flags |= AIM_IMFLAGS_BUDDYREQ;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4113 bi->ico_need = FALSE;
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4114 }
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4115
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4116 if (gc->account->iconfile[0] && !stat(gc->account->iconfile, &st)) {
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4117 FILE *file = fopen(gc->account->iconfile, "r");
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4118 if (file) {
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4119 char *buf = g_malloc(st.st_size);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4120 fread(buf, 1, st.st_size, file);
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4121
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4122 args.iconlen = st.st_size;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4123 args.iconsum = aimutil_iconsum(buf, st.st_size);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4124 args.iconstamp = st.st_mtime;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4125
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4126 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
4127 bi->ico_informed = FALSE;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4128
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4129 if (!bi->ico_informed) {
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4130 debug_printf("Claiming to have a buddy icon\n");
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4131 args.flags |= AIM_IMFLAGS_HASICON;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4132 bi->ico_me_len = args.iconlen;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4133 bi->ico_me_csum = args.iconsum;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4134 bi->ico_me_time = args.iconstamp;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4135 bi->ico_informed = TRUE;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4136 }
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
4137
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4138 fclose(file);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4139 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4140 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4141 }
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4142
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4143 args.destsn = name;
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4144
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4145 len = strlen(message);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4146 args.flags |= oscar_encoding_check(message);
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4147 if (args.flags & AIM_IMFLAGS_UNICODE) {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4148 debug_printf("Sending Unicode IM\n");
4662
740f32459759 [gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents: 4657
diff changeset
4149 args.charset = 0x0002;
4665
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
4150 args.charsubset = 0x0000;
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4151 args.msg = g_convert(message, len, "UCS-2BE", "UTF-8", NULL, &len, &err);
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4152 if (err) {
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4153 debug_printf("Error converting a unicode message: %s\n", err->message);
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4154 debug_printf("This really shouldn't happen!\n");
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4155 /* We really shouldn't try to send the
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4156 * IM now, but I'm not sure what to do */
4800
b8a226b0ddca [gaim-migrate @ 5120]
Ethan Blanton <elb@pidgin.im>
parents: 4799
diff changeset
4157 g_error_free(err);
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4158 }
3850
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
4159 } else if (args.flags & AIM_IMFLAGS_ISO_8859_1) {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4160 debug_printf("Sending ISO-8859-1 IM\n");
4662
740f32459759 [gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents: 4657
diff changeset
4161 args.charset = 0x0003;
4665
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
4162 args.charsubset = 0x0000;
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4163 args.msg = g_convert(message, len, "ISO-8859-1", "UTF-8", NULL, &len, &err);
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4164 if (err) {
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4165 debug_printf("conversion error: %s\n", err->message);
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4166 debug_printf("Someone tell Ethan his 8859-1 detection is wrong\n");
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4167 args.flags ^= AIM_IMFLAGS_ISO_8859_1 | AIM_IMFLAGS_UNICODE;
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4168 len = strlen(message);
4800
b8a226b0ddca [gaim-migrate @ 5120]
Ethan Blanton <elb@pidgin.im>
parents: 4799
diff changeset
4169 g_error_free(err);
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4170 args.msg = g_convert(message, len, "UCS-2BE", "UTF8", NULL, &len, &err);
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4171 if (err) {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4172 debug_printf("Error in unicode fallback: %s\n", err->message);
4800
b8a226b0ddca [gaim-migrate @ 5120]
Ethan Blanton <elb@pidgin.im>
parents: 4799
diff changeset
4173 g_error_free(err);
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
4174 }
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4175 }
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4176 } else {
4662
740f32459759 [gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents: 4657
diff changeset
4177 args.charset = 0x0000;
740f32459759 [gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents: 4657
diff changeset
4178 args.charsubset = 0x0000;
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4179 args.msg = message;
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4180 }
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
4181 args.msglen = len;
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4182
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4183 ret = aim_im_sendch1_ext(od->sess, &args);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4184 }
4838
653f06ff2acf [gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents: 4834
diff changeset
4185
2303
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
4186 if (ret >= 0)
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
4187 return 1;
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
4188 return ret;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4189 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4190
5136
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
4191 static void oscar_get_info(struct gaim_connection *g, const char *name) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4192 struct oscar_data *od = (struct oscar_data *)g->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4193 if (od->icq)
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
4194 aim_icq_getallinfo(od->sess, name);
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
4195 else
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4196 /* 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
4197 * 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
4198 * insert in the middle. i hate people. */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4199 aim_getinfo(od->sess, od->conn, name, AIM_GETINFO_AWAYMESSAGE);
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4200 }
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4201
5136
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
4202 static void oscar_get_away(struct gaim_connection *g, const char *who) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4203 struct oscar_data *od = (struct oscar_data *)g->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4204 if (od->icq) {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4205 struct buddy *budlight = gaim_find_buddy(g->account, who);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4206 if (budlight)
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4207 if ((budlight->uc & 0xffff0000) >> 16)
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4208 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
4209 else
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4210 debug_printf("Error: The user %s has no status message, therefore not requesting.\n", who);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4211 else
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4212 debug_printf("Error: Could not find %s in local contact list, therefore unable to request status message.\n", who);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4213 } else
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4214 aim_getinfo(od->sess, od->conn, who, AIM_GETINFO_GENERALINFO);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4215 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4216
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
4217 static void oscar_set_dir(struct gaim_connection *g, const char *first, const char *middle, const char *last,
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
4218 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
4219 /* XXX - some of these things are wrong, but i'm lazy */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4220 struct oscar_data *od = (struct oscar_data *)g->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4221 aim_setdirectoryinfo(od->sess, od->conn, first, middle, last,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4222 maiden, NULL, NULL, city, state, NULL, 0, web);
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
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4225
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4226 static void oscar_set_idle(struct gaim_connection *gc, int time) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4227 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4228 aim_bos_setidle(od->sess, od->conn, time);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4229 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4230
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4231 static void oscar_set_info(struct gaim_connection *gc, char *text) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4232 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4233 fu32_t flags = 0;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4234 char *msg = NULL;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4235 int msglen = 0;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4236
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4237 if (od->rights.maxsiglen == 0)
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
4238 do_error_dialog(_("Unable to set AIM profile."),
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
4239 _("You have probably requested to set your profile before the login procedure completed. "
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4240 "Your profile remains unset; try setting it again when you are fully connected."), GAIM_WARNING);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4241
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4242 if (od->icq)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4243 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
4244 else {
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4245 if (!text) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4246 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
4247 return;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4248 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4249
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4250 flags = oscar_encoding_check(text);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4251 if (flags & AIM_IMFLAGS_UNICODE) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4252 msg = g_convert(text, strlen(text), "UCS-2BE", "UTF-8", NULL, &msglen, NULL);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4253 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
4254 g_free(msg);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4255 } else if (flags & AIM_IMFLAGS_ISO_8859_1) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4256 msg = g_convert(text, strlen(text), "ISO-8859-1", "UTF-8", NULL, &msglen, NULL);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4257 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
4258 g_free(msg);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4259 } else {
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4260 msglen = strlen(text);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4261 aim_bos_setprofile(od->sess, od->conn, "us-ascii", text, (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
4262 }
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4263
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4264 if (msglen > od->rights.maxsiglen) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4265 gchar *errstr;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4266 errstr = g_strdup_printf(_("The maximum profile length of %d bytes has been exceeded. "
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4267 "Gaim has truncated it for you."), od->rights.maxsiglen);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4268 do_error_dialog(_("Profile too long."), errstr, GAIM_WARNING);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4269 g_free(errstr);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4270 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4271
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4272 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4273
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4274 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4275 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4276
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4277 static void oscar_set_away_aim(struct gaim_connection *gc, struct oscar_data *od, const char *text)
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4278 {
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4279 fu32_t flags = 0;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4280 char *msg = NULL;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4281 int msglen = 0;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4282
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4283 if (od->rights.maxawaymsglen == 0)
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
4284 do_error_dialog(_("Unable to set AIM away message."),
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
4285 _("You have probably requested to set your away message before the login procedure completed. "
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4286 "You remain in a \"present\" state; try setting it again when you are fully connected."), GAIM_WARNING);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4287
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4288 if (gc->away) {
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4289 g_free(gc->away);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4290 gc->away = NULL;
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4291 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4292
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4293 if (!text) {
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4294 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
4295 return;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4296 }
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4297
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4298 flags = oscar_encoding_check(text);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4299 if (flags & AIM_IMFLAGS_UNICODE) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4300 msg = g_convert(text, strlen(text), "UCS-2BE", "UTF-8", NULL, &msglen, NULL);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4301 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
4302 (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen), caps_aim);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4303 g_free(msg);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4304 gc->away = g_strndup(text, od->rights.maxawaymsglen/2);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4305 } else if (flags & AIM_IMFLAGS_ISO_8859_1) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4306 msg = g_convert(text, strlen(text), "ISO-8859-1", "UTF-8", NULL, &msglen, NULL);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4307 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
4308 (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen), caps_aim);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4309 g_free(msg);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4310 gc->away = g_strndup(text, od->rights.maxawaymsglen);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4311 } else {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4312 msglen = strlen(text);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4313 aim_bos_setprofile(od->sess, od->conn, NULL, NULL, 0, "us-ascii", text,
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4314 (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen), caps_aim);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4315 gc->away = g_strndup(text, od->rights.maxawaymsglen);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4316 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4317
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4318 if (msglen > od->rights.maxawaymsglen) {
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4319 gchar *errstr;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4320
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4321 errstr = g_strdup_printf(_("The maximum away message length of %d bytes has been exceeded. "
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
4322 "Gaim has truncated it and set you away."), od->rights.maxawaymsglen);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4323 do_error_dialog(_("Away message too long."), errstr, GAIM_WARNING);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4324 g_free(errstr);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4325 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4326
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4327 return;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4328 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4329
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4330 static void oscar_set_away_icq(struct gaim_connection *gc, struct oscar_data *od, const char *state, const char *message)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4331 {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4332
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4333 if (gc->away) {
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4334 g_free(gc->away);
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4335 gc->away = NULL;
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4336 }
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4337
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4338 if (strcmp(state, _("Invisible"))) {
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4339 if (aim_ssi_getpermdeny(od->sess->ssi.local) != gc->account->permdeny)
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4340 aim_ssi_setpermdeny(od->sess, gc->account->permdeny, 0xffffffff);
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4341 gc->account->permdeny = 4;
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4342 } else {
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4343 if (aim_ssi_getpermdeny(od->sess->ssi.local) != 0x03)
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4344 aim_ssi_setpermdeny(od->sess, 0x03, 0xffffffff);
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4345 gc->account->permdeny = 3;
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4346 }
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4347
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4348 if (!strcmp(state, _("Online")))
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4349 aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL);
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4350 else if (!strcmp(state, _("Away"))) {
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4351 aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4352 gc->away = g_strdup("");
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4353 } else if (!strcmp(state, _("Do Not Disturb"))) {
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4354 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
4355 gc->away = g_strdup("");
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4356 } else if (!strcmp(state, _("Not Available"))) {
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4357 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
4358 gc->away = g_strdup("");
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4359 } else if (!strcmp(state, _("Occupied"))) {
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4360 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
4361 gc->away = g_strdup("");
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4362 } else if (!strcmp(state, _("Free For Chat"))) {
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4363 aim_setextstatus(od->sess, AIM_ICQ_STATE_CHAT);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4364 gc->away = g_strdup("");
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4365 } else if (!strcmp(state, _("Invisible"))) {
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4366 aim_setextstatus(od->sess, AIM_ICQ_STATE_INVISIBLE);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
4367 gc->away = g_strdup("");
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4368 } else if (!strcmp(state, GAIM_AWAY_CUSTOM)) {
2998
358f3655b070 [gaim-migrate @ 3011]
Sean Egan <seanegan@pidgin.im>
parents: 2995
diff changeset
4369 if (message) {
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4370 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
4371 gc->away = g_strdup("");
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4372 } else {
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4373 aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL);
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4374 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4375 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4376
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4377 return;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4378 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4379
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4380 static void oscar_set_away(struct gaim_connection *gc, char *state, char *message)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4381 {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4382 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4383
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4384 if (od->icq)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4385 oscar_set_away_icq(gc, od, state, message);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4386 else
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4387 oscar_set_away_aim(gc, od, message);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4388
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4389 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4390 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4391
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4392 static void oscar_warn(struct gaim_connection *gc, char *name, int anon) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4393 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4394 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
4395 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4396
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4397 static void oscar_dir_search(struct gaim_connection *gc, const char *first, const char *middle, const char *last,
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
4398 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
4399 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4400 if (strlen(email))
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4401 aim_usersearch_address(od->sess, od->conn, email);
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
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4404 static void oscar_add_buddy(struct gaim_connection *gc, const char *name) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4405 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4406 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4407 aim_add_buddy(od->sess, od->conn, name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4408 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4409 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
4410 struct buddy *buddy = gaim_find_buddy(gc->account, name);
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4411 struct group *group = gaim_find_buddys_group(buddy);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4412 if (buddy && group) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4413 debug_printf("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
4414 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
4415 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4416 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4417 #endif
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4418 if (od->icq)
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4419 aim_icq_getalias(od->sess, name);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4420 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4421
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4422 static void oscar_add_buddies(struct gaim_connection *gc, GList *buddies) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4423 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4424 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4425 char buf[MSG_LEN];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4426 int n=0;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4427 while (buddies) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4428 if (n > MSG_LEN - 18) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4429 aim_bos_setbuddylist(od->sess, od->conn, buf);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4430 n = 0;
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
4431 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4432 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
4433 buddies = buddies->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4434 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4435 aim_bos_setbuddylist(od->sess, od->conn, buf);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4436 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4437 if (od->sess->ssi.received_data) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4438 while (buddies) {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4439 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
4440 struct group *group = gaim_find_buddys_group(buddy);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4441 if (buddy && group) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4442 debug_printf("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
4443 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
4444 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4445 buddies = buddies->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4446 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4447 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4448 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4449 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4450
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4451 static void oscar_remove_buddy(struct gaim_connection *gc, char *name, char *group) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4452 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4453 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4454 aim_remove_buddy(od->sess, od->conn, name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4455 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4456 if (od->sess->ssi.received_data) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4457 debug_printf("ssi: deleting buddy %s from group %s\n", name, group);
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4458 aim_ssi_delbuddy(od->sess, name, group);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4459 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4460 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4461 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4462
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4463 static void oscar_remove_buddies(struct gaim_connection *gc, GList *buddies, const char *group) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4464 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4465 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4466 GList *cur;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4467 for (cur=buddies; cur; cur=cur->next)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4468 aim_remove_buddy(od->sess, od->conn, cur->data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4469 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4470 if (od->sess->ssi.received_data) {
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
4471 while (buddies) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4472 debug_printf("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
4473 aim_ssi_delbuddy(od->sess, buddies->data, group);
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
4474 buddies = buddies->next;
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
4475 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4476 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4477 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4478 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4479
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4480 #ifndef NOSSI
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4481 static void oscar_move_buddy(struct gaim_connection *gc, const char *name, const char *old_group, const char *new_group) {
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4482 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
4303
121490448a58 [gaim-migrate @ 4557]
Mark Doliner <markdoliner@pidgin.im>
parents: 4299
diff changeset
4483 if (od->sess->ssi.received_data && strcmp(old_group, new_group)) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4484 debug_printf("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
4485 aim_ssi_movebuddy(od->sess, old_group, new_group, name);
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4486 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4487 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4488
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4489 static void oscar_alias_buddy(struct gaim_connection *gc, const char *name, const char *alias) {
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4490 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4491 if (od->sess->ssi.received_data) {
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4492 char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, name);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4493 if (gname) {
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4494 debug_printf("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
4495 aim_ssi_aliasbuddy(od->sess, gname, name, alias);
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4496 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4497 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4498 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4499
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4500 static void oscar_rename_group(struct gaim_connection *g, const char *old_group, const char *new_group, GList *members) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4501 struct oscar_data *od = (struct oscar_data *)g->proto_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4502
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4503 if (od->sess->ssi.received_data) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4504 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
4505 oscar_remove_buddies(g, members, old_group);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4506 oscar_add_buddies(g, members);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4507 debug_printf("ssi: moved all buddies from group %s to %s\n", old_group, new_group);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4508 } else {
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4509 aim_ssi_rename_group(od->sess, old_group, new_group);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4510 debug_printf("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
4511 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4512 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4513 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4514
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4515 static int gaim_ssi_parseerr(aim_session_t *sess, aim_frame_t *fr, ...) {
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4516 struct gaim_connection *gc = sess->aux_data;
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4517 struct oscar_data *od = gc->proto_data;
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4518 va_list ap;
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4519 fu16_t reason;
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4520
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4521 va_start(ap, fr);
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4522 reason = (fu16_t)va_arg(ap, unsigned int);
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4523 va_end(ap);
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4524
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4525 debug_printf("ssi: SNAC error %hu\n", reason);
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4526
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4527 if (reason == 0x0005) {
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4528 do_error_dialog(_("Unable To Retrive Buddy List"), _("Gaim was temporarily unable to retrive your buddy list from the AIM servers. Your buddy list is not lost, and will probably become available in a few hours."), GAIM_ERROR);
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4529 }
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4530
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4531 /* Activate SSI */
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4532 /* 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
4533 /* Make sure your privacy setting/invisibility is set how you want it before this! */
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4534 debug_printf("ssi: activating server-stored buddy list\n");
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4535 aim_ssi_enable(od->sess);
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4536
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4537 return 1;
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4538 }
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4539
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4540 static int gaim_ssi_parserights(aim_session_t *sess, aim_frame_t *fr, ...) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4541 struct gaim_connection *gc = sess->aux_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4542 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4543 int numtypes, i;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4544 fu16_t *maxitems;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4545 va_list ap;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4546
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4547 va_start(ap, fr);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4548 numtypes = va_arg(ap, int);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4549 maxitems = va_arg(ap, fu16_t *);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4550 va_end(ap);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4551
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4552 debug_printf("ssi rights:");
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4553 for (i=0; i<numtypes; i++)
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4554 debug_printf(" max type 0x%04x=%hd,", i, maxitems[i]);
4317
f3f135811a70 [gaim-migrate @ 4571]
Mark Doliner <markdoliner@pidgin.im>
parents: 4308
diff changeset
4555 debug_printf("\n");
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4556
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4557 if (numtypes >= 0)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4558 od->rights.maxbuddies = maxitems[0];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4559 if (numtypes >= 1)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4560 od->rights.maxgroups = maxitems[1];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4561 if (numtypes >= 2)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4562 od->rights.maxpermits = maxitems[2];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4563 if (numtypes >= 3)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4564 od->rights.maxdenies = maxitems[3];
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4565
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4566 return 1;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4567 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4568
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4569 static int gaim_ssi_parselist(aim_session_t *sess, aim_frame_t *fr, ...) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4570 struct gaim_connection *gc = sess->aux_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4571 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4572 struct aim_ssi_item *curitem;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4573 int tmp;
4778
9023518bb545 [gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents: 4776
diff changeset
4574 gboolean export = FALSE;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4575 /* XXX - use these?
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4576 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4577
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4578 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4579 fmtver = (fu16_t)va_arg(ap, int);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4580 numitems = (fu16_t)va_arg(ap, int);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4581 items = va_arg(ap, struct aim_ssi_item);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4582 timestamp = va_arg(ap, fu32_t);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4583 va_end(ap); */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4584
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4585 debug_printf("ssi: syncing local list and server list\n");
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4586
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4587 /* Clean the buddy list */
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4588 aim_ssi_cleanlist(sess);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4589
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4590 /* Add from server list to local list */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4591 for (curitem=sess->ssi.local; curitem; curitem=curitem->next) {
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4592 switch (curitem->type) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4593 case 0x0000: { /* Buddy */
4251
7d62db57d86a [gaim-migrate @ 4501]
Mark Doliner <markdoliner@pidgin.im>
parents: 4249
diff changeset
4594 if (curitem->name) {
4292
249d89e1b14c [gaim-migrate @ 4545]
Mark Doliner <markdoliner@pidgin.im>
parents: 4282
diff changeset
4595 char *gname = aim_ssi_itemlist_findparentname(sess->ssi.local, curitem->name);
4458
f4d2daa33ea5 [gaim-migrate @ 4733]
Trogdor
parents: 4452
diff changeset
4596 char *gname_utf8 = gaim_try_conv_to_utf8(gname);
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
4597 char *alias = aim_ssi_getalias(sess->ssi.local, gname, curitem->name);
4458
f4d2daa33ea5 [gaim-migrate @ 4733]
Trogdor
parents: 4452
diff changeset
4598 char *alias_utf8 = gaim_try_conv_to_utf8(alias);
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4599 struct buddy *buddy = gaim_find_buddy(gc->account, curitem->name);
4458
f4d2daa33ea5 [gaim-migrate @ 4733]
Trogdor
parents: 4452
diff changeset
4600 /* Should gname be freed here? -- elb */
4754
216cd548ad68 [gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents: 4744
diff changeset
4601 /* Not with the current code, but that might be cleaner -- med */
4458
f4d2daa33ea5 [gaim-migrate @ 4733]
Trogdor
parents: 4452
diff changeset
4602 free(alias);
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
4603 if (buddy) {
4292
249d89e1b14c [gaim-migrate @ 4545]
Mark Doliner <markdoliner@pidgin.im>
parents: 4282
diff changeset
4604 /* Get server stored alias */
4705
cc6029a0379c [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
4605 if (alias_utf8) {
cc6029a0379c [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
4606 g_free(buddy->alias);
cc6029a0379c [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
4607 buddy->alias = g_strdup(alias_utf8);
cc6029a0379c [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
4608 }
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
4609 } else {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4610 struct group *g;
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4611 buddy = gaim_buddy_new(gc->account, curitem->name, alias_utf8);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
4612
4754
216cd548ad68 [gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents: 4744
diff changeset
4613 if (!(g = gaim_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4614 g = gaim_group_new(gname_utf8 ? gname_utf8 : _("Orphans"));
4754
216cd548ad68 [gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents: 4744
diff changeset
4615 gaim_blist_add_group(g, NULL);
216cd548ad68 [gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents: 4744
diff changeset
4616 }
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
4617
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
4618 debug_printf("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
4619 gaim_blist_add_buddy(buddy, g, NULL);
4778
9023518bb545 [gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents: 4776
diff changeset
4620 export = TRUE;
4251
7d62db57d86a [gaim-migrate @ 4501]
Mark Doliner <markdoliner@pidgin.im>
parents: 4249
diff changeset
4621 }
4458
f4d2daa33ea5 [gaim-migrate @ 4733]
Trogdor
parents: 4452
diff changeset
4622 free(gname_utf8);
f4d2daa33ea5 [gaim-migrate @ 4733]
Trogdor
parents: 4452
diff changeset
4623 free(alias_utf8);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4624 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4625 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4626
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4627 case 0x0001: { /* Group */
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
4628 /* Shouldn't add empty groups */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4629 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4630
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4631 case 0x0002: { /* Permit buddy */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4632 if (curitem->name) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4633 /* if (!find_permdeny_by_name(gc->permit, curitem->name)) { AAA */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4634 GSList *list;
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4635 for (list=gc->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
4636 if (!list) {
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4637 debug_printf("ssi: adding permit buddy %s to local list\n", curitem->name);
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4638 gaim_privacy_permit_add(gc->account, curitem->name);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4639 build_allow_list();
4778
9023518bb545 [gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents: 4776
diff changeset
4640 export = TRUE;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4641 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4642 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4643 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4644
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4645 case 0x0003: { /* Deny buddy */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4646 if (curitem->name) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4647 GSList *list;
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4648 for (list=gc->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
4649 if (!list) {
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4650 debug_printf("ssi: adding deny buddy %s to local list\n", curitem->name);
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4651 gaim_privacy_deny_add(gc->account, curitem->name);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4652 build_block_list();
4778
9023518bb545 [gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents: 4776
diff changeset
4653 export = TRUE;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4654 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4655 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4656 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4657
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4658 case 0x0004: { /* Permit/deny setting */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4659 if (curitem->data) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4660 fu8_t permdeny;
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4661 if ((permdeny = aim_ssi_getpermdeny(sess->ssi.local)) && (permdeny != gc->account->permdeny)) {
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4662 debug_printf("ssi: changing permdeny from %d to %hhu\n", gc->account->permdeny, permdeny);
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4663 gc->account->permdeny = permdeny;
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4664 if (od->icq && gc->account->permdeny == 0x03) {
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4665 serv_set_away(gc, "Invisible", "");
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4666 }
4778
9023518bb545 [gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents: 4776
diff changeset
4667 export = TRUE;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4668 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4669 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4670 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4671
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4672 case 0x0005: { /* Presence setting */
3109
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
4673 /* 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
4674 } break;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4675 } /* End of switch on curitem->type */
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4676 } /* End of for loop */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4677
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4678 /* If changes were made, then flush buddy list to file */
4778
9023518bb545 [gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents: 4776
diff changeset
4679 if (export)
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4345
diff changeset
4680 gaim_blist_save();
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4681
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4682 { /* Add from local list to server list */
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4683 GaimBlistNode *gnode, *bnode;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4684 struct group *group;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4685 struct buddy *buddy;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4686 struct gaim_buddy_list *blist;
3017
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
4687 GSList *cur;
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
4688
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4689 /* Buddies */
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4690 if ((blist = gaim_get_blist()))
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4691 for (gnode = blist->root; gnode; gnode = gnode->next) {
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4692 group = (struct group *)gnode;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4693 for (bnode = gnode->child; bnode; bnode = bnode->next) {
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4694 buddy = (struct buddy *)bnode;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4695 if (buddy->account == gc->account) {
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4696 gchar *servernick = gaim_buddy_get_setting(buddy, "servernick");
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4697 if (servernick) {
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4698 serv_got_alias(gc, buddy->name, servernick);
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4699 g_free(servernick);
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4700 }
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4701 if (aim_ssi_itemlist_exists(sess->ssi.local, buddy->name)) {
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4702 /* Store local alias on server */
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4703 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
4704 if (!alias && buddy->alias && strlen(buddy->alias))
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4705 aim_ssi_aliasbuddy(sess, group->name, buddy->name, buddy->alias);
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4706 free(alias);
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4707 } else {
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
4708 debug_printf("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
4709 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
4710 }
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4345
diff changeset
4711 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4712 }
4292
249d89e1b14c [gaim-migrate @ 4545]
Mark Doliner <markdoliner@pidgin.im>
parents: 4282
diff changeset
4713 }
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4714 /* Permit list */
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4715 if (gc->account->permit) {
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4716 for (cur=gc->account->permit; cur; cur=cur->next)
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4717 if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_PERMIT)) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4718 debug_printf("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
4719 aim_ssi_addpermit(sess, cur->data);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4720 }
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4721 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4722
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4723 /* Deny list */
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4724 if (gc->account->deny) {
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4725 for (cur=gc->account->deny; cur; cur=cur->next)
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4726 if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_DENY)) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4727 debug_printf("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
4728 aim_ssi_adddeny(sess, cur->data);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4729 }
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4730 }
3109
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
4731 /* Presence settings (idle time visibility) */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4732 if ((tmp = aim_ssi_getpresence(sess->ssi.local)) != 0xFFFFFFFF)
3109
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
4733 if (report_idle && !(tmp & 0x400))
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4734 aim_ssi_setpresence(sess, tmp | 0x400);
4778
9023518bb545 [gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents: 4776
diff changeset
4735 } /* end adding buddies from local list to server list */
9023518bb545 [gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents: 4776
diff changeset
4736
9023518bb545 [gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents: 4776
diff changeset
4737 { /* Check for maximum number of buddies */
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
4738 GaimBlistNode *gnode,*bnode;
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
4739 tmp = 0;
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
4740 for(gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
4741 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
4742 continue;
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
4743 for(bnode = gnode->child; bnode; bnode = bnode->next) {
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
4744 struct buddy *b = (struct buddy *)bnode;
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
4745 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
4746 continue;
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
4747 if(b->account == gc->account)
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4345
diff changeset
4748 tmp++;
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4345
diff changeset
4749 }
3214
4a122e5439da [gaim-migrate @ 3231]
Sean Egan <seanegan@pidgin.im>
parents: 3212
diff changeset
4750 }
4770
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
4751
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4752 if (tmp > od->rights.maxbuddies) {
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
4753 char *dialog_msg = g_strdup_printf(_("The maximum number of buddies allowed in your buddy list is %d, and you have %d."
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
4754 " Until you are below the limit, some buddies will not show up as online."),
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4755 od->rights.maxbuddies, tmp);
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4756 do_error_dialog(_("Maximum buddy list length exceeded."), dialog_msg, GAIM_WARNING);
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
4757 g_free(dialog_msg);
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
4758 }
4778
9023518bb545 [gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents: 4776
diff changeset
4759 }
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
4760
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4761 /* Set our ICQ status */
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4762 if (od->icq && !gc->away) {
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4763 aim_setextstatus(sess, AIM_ICQ_STATE_NORMAL);
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4764 }
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
4765
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4766 /* Activate SSI */
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4767 /* 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
4768 /* Make sure your privacy setting/invisibility is set how you want it before this! */
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4769 debug_printf("ssi: activating server-stored buddy list\n");
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
4770 aim_ssi_enable(sess);
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
4771
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4772 return 1;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4773 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4774
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4775 static int gaim_ssi_parseack(aim_session_t *sess, aim_frame_t *fr, ...) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4776 struct gaim_connection *gc = sess->aux_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4777 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4778 struct aim_ssi_tmp *retval;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4779
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4780 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4781 retval = va_arg(ap, struct aim_ssi_tmp *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4782 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4783
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4784 while (retval) {
4848
d783214a3380 [gaim-migrate @ 5173]
Taso N. Devetzis
parents: 4842
diff changeset
4785 debug_printf("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
4786
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4787 if (retval->ack != 0xffff)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4788 switch (retval->ack) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4789 case 0x0000: { /* added successfully */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4790 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4791
4829
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
4792 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
4793 gchar *buf;
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
4794 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)")));
5197
ab4d919050d7 [gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents: 5167
diff changeset
4795 do_error_dialog(_("Unable To Add"), buf, GAIM_ERROR);
4829
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
4796 g_free(buf);
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
4797 }
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
4798
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4799 case 0x000e: { /* contact requires authorization */
4828
a7a331159e7d [gaim-migrate @ 5153]
Mark Doliner <markdoliner@pidgin.im>
parents: 4827
diff changeset
4800 if ((retval->action == AIM_CB_SSI_ADD) && (retval->name))
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4801 gaim_auth_sendrequest(gc, retval->name);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4802 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4803
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4804 default: { /* La la la */
5197
ab4d919050d7 [gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents: 5167
diff changeset
4805 gchar *buf;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4806 debug_printf("ssi: Action 0x%04hx was unsuccessful with error 0x%04hx\n", retval->action, retval->ack);
5197
ab4d919050d7 [gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents: 5167
diff changeset
4807 buf = g_strdup_printf(_("Could not add the buddy %s for an unknown reason."), (retval->name ? retval->name : _("(no name)")));
ab4d919050d7 [gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents: 5167
diff changeset
4808 do_error_dialog(_("Unable To Add"), buf, GAIM_ERROR);
ab4d919050d7 [gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents: 5167
diff changeset
4809 g_free(buf);
ab4d919050d7 [gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents: 5167
diff changeset
4810 /* Should remove buddy from local list? */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4811 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4812 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4813
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4814 retval = retval->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4815 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4816
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4817 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4818 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4819
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4820 static int gaim_ssi_authgiven(aim_session_t *sess, aim_frame_t *fr, ...) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4821 struct gaim_connection *gc = sess->aux_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4822 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4823 char *sn, *msg;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4824 gchar *dialog_msg, *nombre;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4825 struct name_data *data;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4826 struct buddy *buddy;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4827
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4828 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4829 sn = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4830 msg = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4831 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4832
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4833 debug_printf("ssi: %s has given you permission to add him to your buddy list\n", sn);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4834
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4835 buddy = gaim_find_buddy(gc->account, sn);
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4836 if (buddy && (gaim_get_buddy_alias_only(buddy)))
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4837 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
4838 else
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4839 nombre = g_strdup(sn);
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4840
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4841 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
4842 data = g_new(struct name_data, 1);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4843 data->gc = gc;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4844 data->name = g_strdup(sn);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4845 data->nick = NULL;
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
4846 do_ask_dialog(_("Authorization Given"), dialog_msg, data, _("Yes"), gaim_icq_contactadd, _("No"), gaim_free_name_data, my_protocol->handle, FALSE);
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4847
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4848 g_free(dialog_msg);
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4849 g_free(nombre);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4850
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4851 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4852 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4853
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4854 static int gaim_ssi_authrequest(aim_session_t *sess, aim_frame_t *fr, ...) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4855 struct gaim_connection *gc = sess->aux_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4856 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4857 char *sn, *msg;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4858 gchar *dialog_msg, *nombre;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4859 struct name_data *data;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4860 struct buddy *buddy;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4861
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4862 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4863 sn = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4864 msg = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4865 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4866
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4867 debug_printf("ssi: received authorization request from %s\n", sn);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4868
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4869 buddy = gaim_find_buddy(gc->account, sn);
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4870 if (buddy && (gaim_get_buddy_alias_only(buddy)))
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4871 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
4872 else
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4873 nombre = g_strdup(sn);
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4874
4337
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
4875 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
4876 data = g_new(struct name_data, 1);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4877 data->gc = gc;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4878 data->name = g_strdup(sn);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4879 data->nick = NULL;
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
4880 do_ask_dialog(_("Authorization Request"), dialog_msg, data, _("Authorize"), gaim_auth_grant, _("Deny"), gaim_auth_dontgrant_msgprompt, my_protocol->handle, FALSE);
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4881
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4882 g_free(dialog_msg);
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4883 g_free(nombre);
4230
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 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4886 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4887
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4888 static int gaim_ssi_authreply(aim_session_t *sess, aim_frame_t *fr, ...) {
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4889 struct gaim_connection *gc = sess->aux_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4890 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4891 char *sn, *msg;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4892 gchar *dialog_msg, *nombre;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4893 fu8_t reply;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4894 struct buddy *buddy;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4895
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4896 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4897 sn = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4898 reply = (fu8_t)va_arg(ap, int);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4899 msg = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4900 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4901
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4902 debug_printf("ssi: received authorization reply from %s. Reply is 0x%04hhx\n", sn, reply);
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4903
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4904 buddy = gaim_find_buddy(gc->account, sn);
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4905 if (buddy && (gaim_get_buddy_alias_only(buddy)))
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4906 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
4907 else
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4908 nombre = g_strdup(sn);
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4909
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4910 if (reply) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4911 /* Granted */
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4912 dialog_msg = g_strdup_printf(_("The user %s has granted your request to add them to your contact list."), nombre);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4913 do_error_dialog(_("Authorization Granted"), dialog_msg, GAIM_INFO);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4914 } else {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4915 /* Denied */
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4916 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."));
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4917 do_error_dialog(_("Authorization Denied"), dialog_msg, GAIM_INFO);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4918 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4919 g_free(dialog_msg);
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4920 g_free(nombre);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4921
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4922 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4923 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4924
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4925 static int gaim_ssi_gotadded(aim_session_t *sess, aim_frame_t *fr, ...) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4926 struct gaim_connection *gc = sess->aux_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4927 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4928 char *sn;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
4929 struct buddy *buddy;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4930
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4931 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4932 sn = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4933 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4934
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4935 buddy = gaim_find_buddy(gc->account, sn);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4936 debug_printf("ssi: %s added you to their buddy list\n", sn);
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
4937 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
4938
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4939 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4940 }
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
4941 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4942
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4943 static GList *oscar_chat_info(struct gaim_connection *gc) {
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4944 GList *m = NULL;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4945 struct proto_chat_entry *pce;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4946
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4947 pce = g_new0(struct proto_chat_entry, 1);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4948 pce->label = _("Join what group:");
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4949 m = g_list_append(m, pce);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4950
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4951 pce = g_new0(struct proto_chat_entry, 1);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4952 pce->label = _("Exchange:");
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4953 pce->is_int = TRUE;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4954 pce->min = 4;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4955 pce->max = 20;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4956 m = g_list_append(m, pce);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4957
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4958 return m;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4959 }
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4960
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4961 static void oscar_join_chat(struct gaim_connection *g, GList *data) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4962 struct oscar_data *od = (struct oscar_data *)g->proto_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4963 aim_conn_t *cur;
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4964 char *name;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4965 int *exchange;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4966
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4967 if (!data || !data->next)
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4968 return;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4969
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4970 name = data->data;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4971 exchange = data->next->data;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4972
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4973 debug_printf("Attempting to join chat room %s.\n", name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4974 if ((cur = aim_getconn_type(od->sess, AIM_CONN_TYPE_CHATNAV))) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4975 debug_printf("chatnav exists, creating room\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4976 aim_chatnav_createroom(od->sess, cur, name, *exchange);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4977 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4978 /* this gets tricky */
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
4979 struct create_room *cr = g_new0(struct create_room, 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4980 debug_printf("chatnav does not exist, opening chatnav\n");
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
4981 cr->exchange = *exchange;
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
4982 cr->name = g_strdup(name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4983 od->create_rooms = g_slist_append(od->create_rooms, cr);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4984 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_CHATNAV);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4985 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4986 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4987
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
4988 static void oscar_chat_invite(struct gaim_connection *g, int id, const char *message, const char *name) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4989 struct oscar_data *od = (struct oscar_data *)g->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4990 struct chat_connection *ccon = find_oscar_chat(g, id);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4991
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4992 if (!ccon)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4993 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4994
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4995 aim_chat_invite(od->sess, od->conn, name, message ? message : "",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4996 ccon->exchange, ccon->name, 0x0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4997 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4998
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4999 static void oscar_chat_leave(struct gaim_connection *g, int id) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5000 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
5001 GSList *bcs = g->buddy_chats;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
5002 struct gaim_conversation *b = NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5003 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5004 int count = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5005
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5006 while (bcs) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5007 count++;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
5008 b = (struct gaim_conversation *)bcs->data;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
5009 if (id == gaim_chat_get_id(GAIM_CHAT(b)))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5010 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5011 bcs = bcs->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5012 b = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5013 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5014
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5015 if (!b)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5016 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5017
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5018 debug_printf("Attempting to leave room %s (currently in %d rooms)\n", b->name, count);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5019
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
5020 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
5021 if (c != NULL) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5022 if (od)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5023 od->oscar_chats = g_slist_remove(od->oscar_chats, c);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5024 if (c->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
5025 gaim_input_remove(c->inpa);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5026 if (g && od->sess)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5027 aim_conn_kill(od->sess, &c->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5028 g_free(c->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5029 g_free(c->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5030 g_free(c);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5031 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5032 /* 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
5033 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
5034 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5035
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5036 static int oscar_chat_send(struct gaim_connection *g, int id, char *message) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5037 struct oscar_data *od = (struct oscar_data *)g->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5038 GSList *bcs = g->buddy_chats;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
5039 struct gaim_conversation *b = NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5040 struct chat_connection *c = NULL;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5041 char *buf, *buf2;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5042 int i, j;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5043
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5044 while (bcs) {
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
5045 b = (struct gaim_conversation *)bcs->data;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
5046 if (id == gaim_chat_get_id(GAIM_CHAT(b)))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5047 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5048 bcs = bcs->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5049 b = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5050 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5051 if (!b)
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5052 return -EINVAL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5053
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5054 bcs = od->oscar_chats;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5055 while (bcs) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5056 c = (struct chat_connection *)bcs->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5057 if (b == c->cnv)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5058 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5059 bcs = bcs->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5060 c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5061 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5062 if (!c)
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5063 return -EINVAL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5064
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5065 buf = g_malloc(strlen(message) * 4 + 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5066 for (i = 0, j = 0; i < strlen(message); i++) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5067 if (message[i] == '\n') {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5068 buf[j++] = '<';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5069 buf[j++] = 'B';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5070 buf[j++] = 'R';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5071 buf[j++] = '>';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5072 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5073 buf[j++] = message[i];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5074 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5075 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5076 buf[j] = '\0';
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5077
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5078 if (strlen(buf) > c->maxlen)
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5079 return -E2BIG;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5080
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5081 buf2 = strip_html(buf);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5082 if (strlen(buf2) > c->maxvis) {
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5083 g_free(buf2);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5084 return -E2BIG;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5085 }
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5086 g_free(buf2);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5087
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5088 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
5089 g_free(buf);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
5090 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5091 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5092
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5093 static const char *oscar_list_icon(struct gaim_account *a, struct buddy *b) {
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5094 if (!b || (b && b->name && b->name[0] == '+')) {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5095 if (isdigit(a->username[0]))
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5096 return "icq";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5097 else
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5098 return "aim";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5099 }
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5100
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5101 if (isdigit(b->name[0]))
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5102 return "icq";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5103 return "aim";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5104 }
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5105
4690
e30dbd5b361f [gaim-migrate @ 5001]
Nathan Walp <nwalp@pidgin.im>
parents: 4687
diff changeset
5106 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
5107 {
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5108 char *emblems[4] = {NULL,NULL,NULL,NULL};
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5109 int i = 0;
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5110
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5111 if (!GAIM_BUDDY_IS_ONLINE(b)) {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5112 struct gaim_account *account;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5113 struct gaim_connection *gc;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5114 struct oscar_data *od;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5115 char *gname;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5116 if ((b->name) && (account = b->account) && (gc = account->gc) &&
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5117 (od = gc->proto_data) && (od->sess->ssi.received_data) &&
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5118 (gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name)) &&
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5119 (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name))) {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5120 emblems[i++] = "notauthorized";
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5121 } else {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5122 emblems[i++] = "offline";
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5123 }
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5124 }
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4901
diff changeset
5125
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5126 if (b->name && (b->uc & 0xffff0000) && isdigit(b->name[0])) {
4960
65bf67b7600f [gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents: 4959
diff changeset
5127 int uc = b->uc >> 16;
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5128 if (uc & AIM_ICQ_STATE_INVISIBLE)
4960
65bf67b7600f [gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents: 4959
diff changeset
5129 emblems[i++] = "invisible";
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5130 else if (uc & AIM_ICQ_STATE_CHAT)
4960
65bf67b7600f [gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents: 4959
diff changeset
5131 emblems[i++] = "freeforchat";
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5132 else if (uc & AIM_ICQ_STATE_DND)
4960
65bf67b7600f [gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents: 4959
diff changeset
5133 emblems[i++] = "dnd";
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5134 else if (uc & AIM_ICQ_STATE_OUT)
4960
65bf67b7600f [gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents: 4959
diff changeset
5135 emblems[i++] = "na";
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5136 else if (uc & AIM_ICQ_STATE_BUSY)
4960
65bf67b7600f [gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents: 4959
diff changeset
5137 emblems[i++] = "occupied";
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5138 else if (uc & AIM_ICQ_STATE_AWAY)
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5139 emblems[i++] = "away";
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5140 } else {
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5141 if (b->uc & UC_UNAVAILABLE)
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5142 emblems[i++] = "away";
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5143 }
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5144 if (b->uc & UC_WIRELESS)
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5145 emblems[i++] = "wireless";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5146 if (b->uc & UC_AOL)
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5147 emblems[i++] = "aol";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5148 if (b->uc & UC_ADMIN)
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5149 emblems[i++] = "admin";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5150 if (b->uc & UC_AB && i < 4)
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5151 emblems[i++] = "activebuddy";
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5152 /* if (b->uc & UC_UNCONFIRMED && i < 4)
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
5153 emblems[i++] = "unconfirmed"; */
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5154 *se = emblems[0];
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5155 *sw = emblems[1];
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5156 *nw = emblems[2];
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5157 *ne = emblems[3];
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5158 }
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5159
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5160 static char *oscar_tooltip_text(struct buddy *b) {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5161 struct gaim_connection *gc = b->account->gc;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5162 struct oscar_data *od = gc->proto_data;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5163 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
5164 gchar *tmp, *yay = g_strdup("");
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5165
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5166 if (GAIM_BUDDY_IS_ONLINE(b)) {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5167 if (isdigit(b->name[0])) {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5168 char *tmp, *status;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5169 status = gaim_icq_status((b->uc & 0xffff0000) >> 16);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5170 tmp = yay;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5171 yay = g_strconcat(tmp, _("<b>Status:</b> "), status, "\n", NULL);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5172 g_free(tmp);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5173 g_free(status);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5174 }
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5175
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5176 if (bi) {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5177 char *tstr = sec_to_text(time(NULL) - bi->signon +
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5178 (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
5179 tmp = yay;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5180 yay = g_strconcat(tmp, _("<b>Logged In:</b> "), tstr, "\n", NULL);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5181 free(tmp);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5182 free(tstr);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5183
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5184 if (bi->caps) {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5185 char *caps = caps_string(bi->caps);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5186 tmp = yay;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5187 yay = g_strconcat(tmp, _("<b>Capabilities:</b> "), caps, "\n", NULL);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5188 free(tmp);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5189 }
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5190 }
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5191 } else {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5192 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
5193 if (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name)) {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5194 tmp = yay;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5195 yay = g_strconcat(tmp, _("<b>Status:</b> Not Authorized"), "\n", NULL);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5196 g_free(tmp);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5197 } else {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5198 tmp = yay;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5199 yay = g_strconcat(tmp, _("<b>Status:</b> Offline"), "\n", NULL);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5200 g_free(tmp);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5201 }
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5202 }
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5203
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5204 /* remove the trailing newline character */
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5205 if (yay)
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5206 yay[strlen(yay)-1] = '\0';
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5207 return yay;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5208 }
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5209
5167
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5210 static char *oscar_status_text(struct buddy *b) {
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5211 struct gaim_connection *gc = b->account->gc;
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5212 struct oscar_data *od = gc->proto_data;
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5213 gchar *ret = NULL;
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5214
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5215 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
5216 if (isdigit(b->name[0]))
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5217 ret = gaim_icq_status((b->uc & 0xffff0000) >> 16);
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5218 else
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5219 ret = g_strdup(_("Away"));
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5220 } else if (!GAIM_BUDDY_IS_ONLINE(b)) {
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5221 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
5222 if (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name))
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5223 ret = g_strdup(_("Not Authorized"));
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5224 else
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5225 ret = g_strdup(_("Offline"));
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5226 }
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5227
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5228 return ret;
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5229 }
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
5230
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
5231 /*
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5232 * 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
5233 */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5234 static int gaim_odc_initiate(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5235 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5236 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
5237 struct gaim_conversation *cnv;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5238 struct direct_im *dim;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5239 char buf[256];
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5240 char *sn;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5241 va_list ap;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5242 aim_conn_t *newconn, *listenerconn;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5243
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5244 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5245 newconn = va_arg(ap, aim_conn_t *);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5246 listenerconn = va_arg(ap, aim_conn_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5247 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5248
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5249 aim_conn_close(listenerconn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5250 aim_conn_kill(sess, &listenerconn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5251
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5252 sn = g_strdup(aim_odc_getsn(newconn));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5253
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5254 debug_printf("DirectIM: initiate success to %s\n", sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5255 dim = find_direct_im(od, sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5256
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
5257 if (!(cnv = gaim_find_conversation(sn)))
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
5258 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
5259 gaim_input_remove(dim->watcher);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5260 dim->conn = newconn;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5261 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
5262 dim->connected = TRUE;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5263 g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5264 g_free(sn);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
5265 gaim_conversation_write(cnv, NULL, buf, -1, WFLAG_SYSTEM, time(NULL));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5266
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5267 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
5268 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
5269 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
5270
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5271 return 1;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5272 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5273
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5274 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
5275 va_list ap;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5276 char *sn;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5277 double percent;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5278 struct gaim_connection *gc = sess->aux_data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5279 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
5280 struct gaim_conversation *c;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5281 struct direct_im *dim;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5282
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5283 va_start(ap, fr);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5284 sn = va_arg(ap, char *);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5285 percent = va_arg(ap, double);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5286 va_end(ap);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5287
2994
72d79fc3eeaa [gaim-migrate @ 3007]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
5288 if (!(dim = find_direct_im(od, sn)))
72d79fc3eeaa [gaim-migrate @ 3007]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
5289 return 1;
3059
bd4d661482f5 [gaim-migrate @ 3073]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3048
diff changeset
5290 if (dim->watcher) {
bd4d661482f5 [gaim-migrate @ 3073]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3048
diff changeset
5291 gaim_input_remove(dim->watcher); /* Otherwise, the callback will callback */
bd4d661482f5 [gaim-migrate @ 3073]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3048
diff changeset
5292 dim->watcher = 0;
bd4d661482f5 [gaim-migrate @ 3073]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3048
diff changeset
5293 }
3044
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
5294 while (gtk_events_pending())
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
5295 gtk_main_iteration();
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
5296
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
5297 if ((c = gaim_find_conversation(sn)))
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents: 4358
diff changeset
5298 gaim_conversation_update_progress(c, percent);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5299 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5300 oscar_callback, dim->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5301
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5302 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5303 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5304
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5305 static int gaim_odc_incoming(aim_session_t *sess, aim_frame_t *fr, ...) {
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5306 struct gaim_connection *gc = sess->aux_data;
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5307 int imflags = 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5308 va_list ap;
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5309 char *sn, *msg;
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5310 int len, encoding, isawaymsg;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5311
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5312 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5313 sn = va_arg(ap, char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5314 msg = va_arg(ap, char *);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5315 len = va_arg(ap, int);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
5316 encoding = va_arg(ap, int);
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5317 isawaymsg = va_arg(ap, int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5318 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5319
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5320 debug_printf("Got DirectIM message from %s\n", sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5321
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5322 if (isawaymsg)
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5323 imflags |= IM_FLAG_AWAY;
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5324
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5325 /* 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
5326 serv_got_im(gc, sn, msg, imflags, time(NULL), len);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5327
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5328 return 1;
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
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5331 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
5332 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5333 char *sn;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5334 int typing;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5335 struct gaim_connection *gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5336
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5337 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5338 sn = va_arg(ap, char *);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5339 typing = va_arg(ap, int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5340 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5341
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5342 if (typing == 0x0002) {
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5343 /* I had to leave this. It's just too funny. It reminds me of my sister. */
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5344 debug_printf("ohmigod! %s has started typing (DirectIM). He's going to send you a message! *squeal*\n", sn);
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
5345 serv_got_typing(gc, sn, 0, TYPING);
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5346 } else if (typing == 0x0001)
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5347 serv_got_typing(gc, sn, 0, TYPED);
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5348 else
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
5349 serv_got_typing_stopped(gc, sn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5350 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5351 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5352
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5353 struct ask_do_dir_im {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5354 char *who;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5355 struct gaim_connection *gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5356 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5357
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
5358 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
5359 g_free(data->who);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5360 g_free(data);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5361 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5362
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
5363 static void oscar_direct_im(struct ask_do_dir_im *data) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5364 struct gaim_connection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5365 struct oscar_data *od;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5366 struct direct_im *dim;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5367
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5368 if (!g_slist_find(connections, gc)) {
5136
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
5369 g_free(data->who);
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5370 g_free(data);
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5371 return;
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5372 }
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5373
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5374 od = (struct oscar_data *)gc->proto_data;
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5375
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5376 dim = find_direct_im(od, data->who);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5377 if (dim) {
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5378 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
5379 od->direct_ims = g_slist_remove(od->direct_ims, dim);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5380 gaim_input_remove(dim->watcher);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5381 g_free(dim);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5382 debug_printf("Gave up on old direct IM, trying again\n");
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5383 } else {
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
5384 do_error_dialog("DirectIM already open.", NULL, GAIM_ERROR);
5136
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
5385 g_free(data->who);
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5386 g_free(data);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5387 return;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5388 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5389 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5390 dim = g_new0(struct direct_im, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5391 dim->gc = gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5392 g_snprintf(dim->name, sizeof dim->name, "%s", data->who);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5393
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5394 dim->conn = aim_odc_initiate(od->sess, data->who);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5395 if (dim->conn != NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5396 od->direct_ims = g_slist_append(od->direct_ims, dim);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
5397 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5398 oscar_callback, dim->conn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5399 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
5400 gaim_odc_initiate, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5401 } else {
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
5402 do_error_dialog(_("Unable to open Direct IM"), NULL, GAIM_ERROR);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5403 g_free(dim);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5404 }
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5405
5136
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
5406 g_free(data->who);
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
5407 g_free(data);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5408 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5409
5136
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
5410 static void oscar_ask_direct_im(struct gaim_connection *gc, const char *who) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5411 char buf[BUF_LONG];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5412 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
5413 data->who = g_strdup(who);
2170
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
5414 data->gc = gc;
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
5415 g_snprintf(buf, sizeof(buf), _("You have selected to open a Direct IM connection with %s."), who);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5416 do_ask_dialog(buf, _("Because this reveals your IP address, it may be considered a privacy risk. Do you wish to continue?"), data, _("Connect"), oscar_direct_im, _("Cancel"), oscar_cancel_direct_im, my_protocol->handle, FALSE);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5417 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5418
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5419 static void oscar_set_permit_deny(struct gaim_connection *gc) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5420 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5421 #ifdef NOSSI
4770
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5422 GSList *list, *g = gaim_blist_groups(), *g1;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5423 char buf[MAXMSGLEN];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5424 int at;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5425
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
5426 switch(gc->account->permdeny) {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5427 case 1:
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5428 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, gc->username);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5429 break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5430 case 2:
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5431 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, gc->username);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5432 break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5433 case 3:
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5434 list = gc->account->permit;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5435 at = 0;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5436 while (list) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5437 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
5438 list = list->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5439 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5440 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, buf);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5441 break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5442 case 4:
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5443 list = gc->account->deny;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5444 at = 0;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5445 while (list) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5446 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
5447 list = list->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5448 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5449 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, buf);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5450 break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5451 case 5:
4770
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5452 g1 = g;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5453 at = 0;
4770
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5454 while (g1) {
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5455 list = gaim_blist_members((struct group *)g->data);
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5456 GSList list1 = list;
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5457 while (list1) {
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5458 struct buddy *b = list1->data;
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
5459 if(b->account == gc->account)
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4345
diff changeset
5460 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
5461 list1 = list1->next;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
5462 }
4770
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5463 g_slist_free(list);
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5464 g1 = g1->next;
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4345
diff changeset
5465 }
4770
be590660a9c2 [gaim-migrate @ 5088]
Sean Egan <seanegan@pidgin.im>
parents: 4766
diff changeset
5466 g_slist_free(g);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5467 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, buf);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5468 break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5469 default:
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5470 break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5471 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5472 signoff_blocked(gc);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5473 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5474 if (od->sess->ssi.received_data)
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
5475 aim_ssi_setpermdeny(od->sess, gc->account->permdeny, 0xffffffff);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5476 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5477 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5478
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4345
diff changeset
5479 static void oscar_add_permit(struct gaim_connection *gc, const char *who) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5480 #ifdef NOSSI
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
5481 if (gc->account->permdeny == 3)
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5482 oscar_set_permit_deny(gc);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5483 #else
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5484 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5485 debug_printf("ssi: About to add a permit\n");
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5486 if (od->sess->ssi.received_data)
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
5487 aim_ssi_addpermit(od->sess, who);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5488 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5489 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5490
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4345
diff changeset
5491 static void oscar_add_deny(struct gaim_connection *gc, const char *who) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5492 #ifdef NOSSI
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
5493 if (gc->account->permdeny == 4)
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5494 oscar_set_permit_deny(gc);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5495 #else
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5496 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5497 debug_printf("ssi: About to add a deny\n");
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5498 if (od->sess->ssi.received_data)
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
5499 aim_ssi_adddeny(od->sess, who);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5500 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5501 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5502
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4345
diff changeset
5503 static void oscar_rem_permit(struct gaim_connection *gc, const char *who) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5504 #ifdef NOSSI
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
5505 if (gc->account->permdeny == 3)
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5506 oscar_set_permit_deny(gc);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5507 #else
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5508 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5509 debug_printf("ssi: About to delete a permit\n");
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5510 if (od->sess->ssi.received_data)
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
5511 aim_ssi_delpermit(od->sess, who);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5512 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5513 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5514
4349
a65175463a31 [gaim-migrate @ 4614]
Nathan Walp <nwalp@pidgin.im>
parents: 4345
diff changeset
5515 static void oscar_rem_deny(struct gaim_connection *gc, const char *who) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5516 #ifdef NOSSI
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
5517 if (gc->account->permdeny == 4)
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5518 oscar_set_permit_deny(gc);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5519 #else
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5520 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5521 debug_printf("ssi: About to delete a deny\n");
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5522 if (od->sess->ssi.received_data)
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
5523 aim_ssi_deldeny(od->sess, who);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5524 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5525 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5526
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
5527 static GList *oscar_away_states(struct gaim_connection *gc)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5528 {
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
5529 struct oscar_data *od = gc->proto_data;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
5530 GList *m = NULL;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
5531
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
5532 if (!od->icq)
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
5533 return g_list_append(m, GAIM_AWAY_CUSTOM);
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
5534
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5535 m = g_list_append(m, _("Online"));
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5536 m = g_list_append(m, _("Away"));
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5537 m = g_list_append(m, _("Do Not Disturb"));
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5538 m = g_list_append(m, _("Not Available"));
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5539 m = g_list_append(m, _("Occupied"));
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5540 m = g_list_append(m, _("Free For Chat"));
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5541 m = g_list_append(m, _("Invisible"));
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5542
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5543 return m;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5544 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5545
5136
81079a81ebc6 [gaim-migrate @ 5500]
Nathan Walp <nwalp@pidgin.im>
parents: 5134
diff changeset
5546 static GList *oscar_buddy_menu(struct gaim_connection *gc, const char *who) {
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5547 struct oscar_data *od = gc->proto_data;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5548 GList *m = NULL;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5549 struct proto_buddy_menu *pbm;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5550
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5551 if (od->icq) {
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5552 #if 0
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5553 pbm = g_new0(struct proto_buddy_menu, 1);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5554 pbm->label = _("Get Status Msg");
4969
7e6577f9d4b6 [gaim-migrate @ 5303]
Mark Doliner <markdoliner@pidgin.im>
parents: 4965
diff changeset
5555 pbm->callback = oscar_get_icqstatusmsg;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5556 pbm->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5557 m = g_list_append(m, pbm);
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5558 #endif
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5559 } else {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5560 struct buddy *b = gaim_find_buddy(gc->account, who);
4356
d8654d54a777 [gaim-migrate @ 4622]
Mark Doliner <markdoliner@pidgin.im>
parents: 4355
diff changeset
5561
5068
0d4c4df65dd0 [gaim-migrate @ 5419]
Nathan Walp <nwalp@pidgin.im>
parents: 4972
diff changeset
5562 if ((aim_sncmp(gc->username, who)) && GAIM_BUDDY_IS_ONLINE(b)) {
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5563 pbm = g_new0(struct proto_buddy_menu, 1);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5564 pbm->label = _("Direct IM");
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5565 pbm->callback = oscar_ask_direct_im;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5566 pbm->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5567 m = g_list_append(m, pbm);
4650
5b2338bb19fd [gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents: 4649
diff changeset
5568
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5569 pbm = g_new0(struct proto_buddy_menu, 1);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5570 pbm->label = _("Send File");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5571 pbm->callback = oscar_ask_sendfile;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5572 pbm->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5573 m = g_list_append(m, pbm);
4826
ce211ce6a336 [gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents: 4825
diff changeset
5574 #if 0
ce211ce6a336 [gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents: 4825
diff changeset
5575 pbm = g_new0(struct proto_buddy_menu, 1);
ce211ce6a336 [gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents: 4825
diff changeset
5576 pbm->label = _("Get File");
ce211ce6a336 [gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents: 4825
diff changeset
5577 pbm->callback = oscar_ask_getfile;
ce211ce6a336 [gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents: 4825
diff changeset
5578 pbm->gc = gc;
ce211ce6a336 [gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents: 4825
diff changeset
5579 m = g_list_append(m, pbm);
ce211ce6a336 [gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents: 4825
diff changeset
5580 #endif
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5581 }
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5582 }
5197
ab4d919050d7 [gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents: 5167
diff changeset
5583
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5584 if (od->sess->ssi.received_data) {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5585 char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, who);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5586 if (gname && aim_ssi_waitingforauth(od->sess->ssi.local, gname, who)) {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5587 pbm = g_new0(struct proto_buddy_menu, 1);
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5588 pbm->label = _("Re-request Authorization");
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5589 pbm->callback = gaim_auth_sendrequest;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5590 pbm->gc = gc;
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
5591 m = g_list_append(m, pbm);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5592 }
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4901
diff changeset
5593 }
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4901
diff changeset
5594
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5595 return m;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5596 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5597
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5598 static void oscar_format_screenname(struct gaim_connection *gc, char *nick) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5599 struct oscar_data *od = gc->proto_data;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5600 if (!aim_sncmp(gc->username, nick)) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5601 if (!aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH)) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5602 od->setnick = TRUE;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5603 od->newsn = g_strdup(nick);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5604 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5605 } else {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5606 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
5607 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5608 } else {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5609 do_error_dialog(_("The new formatting is invalid."),
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5610 _("Screenname formatting can change only capitalization and whitespace."), GAIM_ERROR);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5611 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5612 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5613
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5614 static void oscar_show_format_screenname(struct gaim_connection *gc)
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5615 {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5616 do_prompt_dialog(_("New screenname formatting:"), gc->displayname, gc, oscar_format_screenname, NULL);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5617 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5618
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5619 static void oscar_confirm_account(struct gaim_connection *gc)
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5620 {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5621 struct oscar_data *od = gc->proto_data;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5622 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
5623
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5624 if (conn) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5625 aim_admin_reqconfirm(od->sess, conn);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5626 } else {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5627 od->conf = TRUE;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5628 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5629 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5630 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5631
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5632 static void oscar_show_email(struct gaim_connection *gc)
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5633 {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5634 struct oscar_data *od = gc->proto_data;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5635 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
5636
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5637 if (conn) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5638 aim_admin_getinfo(od->sess, conn, 0x11);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5639 } else {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5640 od->reqemail = TRUE;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5641 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5642 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5643 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5644
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5645 static void oscar_change_email(struct gaim_connection *gc, char *email)
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5646 {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5647 struct oscar_data *od = gc->proto_data;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5648 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
5649
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5650 if (conn) {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5651 aim_admin_setemail(od->sess, conn, email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5652 } else {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5653 od->setemail = TRUE;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5654 od->email = g_strdup(email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5655 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5656 }
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5657 }
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5658
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5659 static void oscar_show_change_email(struct gaim_connection *gc)
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5660 {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5661 do_prompt_dialog(_("Change Address To: "), NULL, gc, oscar_change_email, NULL);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5662 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5663
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5664 static void oscar_show_awaitingauth(struct gaim_connection *gc)
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5665 {
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5666 struct oscar_data *od = gc->proto_data;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5667 gchar *nombre, *text, *tmp;
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
5668 GaimBlistNode *gnode,*bnode;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5669 int num=0;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5670
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5671 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
5672
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
5673 for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
5674 struct group *group = (struct group *)gnode;
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
5675 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
5676 continue;
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
5677 for (bnode = gnode->child; bnode; bnode = bnode->next) {
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
5678 struct buddy *buddy = (struct buddy *)bnode;
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
5679 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
5680 continue;
4491
715515ab95da [gaim-migrate @ 4766]
Nathan Walp <nwalp@pidgin.im>
parents: 4479
diff changeset
5681 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
5682 if (gaim_get_buddy_alias_only(buddy))
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
5683 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
5684 else
4337
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
5685 nombre = g_strdup_printf(" %s", buddy->name);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5686 tmp = g_strdup_printf("%s<BR>%s", text, nombre);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5687 g_free(text);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5688 text = tmp;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5689 g_free(nombre);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5690 num++;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5691 }
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5692 }
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5693 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5694
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5695 if (!num) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5696 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
5697 g_free(text);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5698 text = tmp;
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5699 }
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5700
4959
f59fe1f96ffd [gaim-migrate @ 5293]
Lumiere
parents: 4952
diff changeset
5701 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
5702 g_free(text);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5703 text = tmp;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5704 g_show_info_text(gc, gc->username, 2, text, NULL);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5705 g_free(text);
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5706 }
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5707
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5708 static void oscar_show_chpassurl(struct gaim_connection *gc)
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5709 {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5710 struct oscar_data *od = gc->proto_data;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5711 open_url(NULL, od->sess->authinfo->chpassurl);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5712 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5713
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5714 static GList *oscar_actions(struct gaim_connection *gc)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5715 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5716 struct oscar_data *od = gc->proto_data;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5717 struct proto_actions_menu *pam;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5718 GList *m = NULL;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5719
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5720 pam = g_new0(struct proto_actions_menu, 1);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5721 pam->label = _("Set User Info");
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5722 pam->callback = show_set_info;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5723 pam->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5724 m = g_list_append(m, pam);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5725
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5726 if ((od->sess->authinfo->regstatus == 0x0003) || (od->icq)) {
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5727 pam = g_new0(struct proto_actions_menu, 1);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5728 pam->label = _("Change Password");
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5729 pam->callback = show_change_passwd;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5730 pam->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5731 m = g_list_append(m, pam);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5732 }
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5733
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5734 if (od->sess->authinfo->chpassurl) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5735 pam = g_new0(struct proto_actions_menu, 1);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5736 pam->label = _("Change Password (URL)");
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5737 pam->callback = oscar_show_chpassurl;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5738 pam->gc = gc;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5739 m = g_list_append(m, pam);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5740 }
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5741
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5742 if (od->sess->authinfo->regstatus == 0x0003) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5743 /* AIM actions */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5744 m = g_list_append(m, NULL);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5745
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5746 pam = g_new0(struct proto_actions_menu, 1);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5747 pam->label = _("Format Screenname");
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5748 pam->callback = oscar_show_format_screenname;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5749 pam->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5750 m = g_list_append(m, pam);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5751
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5752 pam = g_new0(struct proto_actions_menu, 1);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5753 pam->label = _("Confirm Account");
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5754 pam->callback = oscar_confirm_account;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5755 pam->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5756 m = g_list_append(m, pam);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5757
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5758 pam = g_new0(struct proto_actions_menu, 1);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5759 pam->label = _("Display Current Registered Address");
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5760 pam->callback = oscar_show_email;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5761 pam->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5762 m = g_list_append(m, pam);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5763
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5764 pam = g_new0(struct proto_actions_menu, 1);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5765 pam->label = _("Change Current Registered Address");
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5766 pam->callback = oscar_show_change_email;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5767 pam->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5768 m = g_list_append(m, pam);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5769 }
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5770
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5771 m = g_list_append(m, NULL);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5772
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5773 pam = g_new0(struct proto_actions_menu, 1);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5774 pam->label = _("Show Buddies Awaiting Authorization");
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5775 pam->callback = oscar_show_awaitingauth;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5776 pam->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5777 m = g_list_append(m, pam);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5778
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5779 m = g_list_append(m, NULL);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5780
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5781 pam = g_new0(struct proto_actions_menu, 1);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5782 pam->label = _("Search for Buddy by Email");
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5783 pam->callback = show_find_email;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5784 pam->gc = gc;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5785 m = g_list_append(m, pam);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5786
4336
35df0f5d8651 [gaim-migrate @ 4600]
Mark Doliner <markdoliner@pidgin.im>
parents: 4333
diff changeset
5787 /* pam = g_new0(struct proto_actions_menu, 1);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5788 pam->label = _("Search for Buddy by Information");
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5789 pam->callback = show_find_info;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
5790 pam->gc = gc;
4336
35df0f5d8651 [gaim-migrate @ 4600]
Mark Doliner <markdoliner@pidgin.im>
parents: 4333
diff changeset
5791 m = g_list_append(m, pam); */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5792
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5793 return m;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5794 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5795
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
5796 static void oscar_change_passwd(struct gaim_connection *gc, const char *old, const char *new)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5797 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5798 struct oscar_data *od = gc->proto_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5799
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5800 if (od->icq) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5801 aim_icq_changepasswd(od->sess, new);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5802 } else {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5803 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
5804 if (conn) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5805 aim_admin_changepasswd(od->sess, conn, new, old);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5806 } else {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5807 od->chpass = TRUE;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5808 od->oldp = g_strdup(old);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5809 od->newp = g_strdup(new);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5810 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5811 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5812 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5813 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5814
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5815 static void oscar_convo_closed(struct gaim_connection *gc, char *who)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5816 {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5817 struct oscar_data *od = gc->proto_data;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5818 struct direct_im *dim = find_direct_im(od, who);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5819
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5820 if (!dim)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5821 return;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5822
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5823 od->direct_ims = g_slist_remove(od->direct_ims, dim);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5824 gaim_input_remove(dim->watcher);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5825 aim_conn_kill(od->sess, &dim->conn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5826 g_free(dim);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5827 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5828
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5829 static GaimPluginProtocolInfo prpl_info =
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5830 {
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5831 GAIM_PROTO_OSCAR,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5832 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
5833 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5834 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5835 oscar_list_icon,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5836 oscar_list_emblems,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5837 oscar_status_text,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5838 oscar_tooltip_text,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5839 oscar_away_states,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5840 oscar_actions,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5841 oscar_buddy_menu,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5842 oscar_chat_info,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5843 oscar_login,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5844 oscar_close,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5845 oscar_send_im,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5846 oscar_set_info,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5847 oscar_send_typing,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5848 oscar_get_info,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5849 oscar_set_away,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5850 oscar_get_away,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5851 oscar_set_dir,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5852 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5853 oscar_dir_search,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5854 oscar_set_idle,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5855 oscar_change_passwd,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5856 oscar_add_buddy,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5857 oscar_add_buddies,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5858 oscar_remove_buddy,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5859 oscar_remove_buddies,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5860 oscar_add_permit,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5861 oscar_add_deny,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5862 oscar_rem_permit,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5863 oscar_rem_deny,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5864 oscar_set_permit_deny,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5865 oscar_warn,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5866 oscar_join_chat,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5867 oscar_chat_invite,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5868 oscar_chat_leave,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5869 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5870 oscar_chat_send,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5871 oscar_keepalive,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5872 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5873 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5874 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5875 #ifndef NOSSI
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5876 oscar_alias_buddy,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5877 oscar_move_buddy,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5878 oscar_rename_group,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5879 #else
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5880 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5881 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5882 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5883 #endif
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5884 NULL,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5885 oscar_convo_closed,
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5886 NULL
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5887 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5888
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5889 static GaimPluginInfo info =
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5890 {
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5891 2, /**< api_version */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5892 GAIM_PLUGIN_PROTOCOL, /**< type */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5893 NULL, /**< ui_requirement */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5894 0, /**< flags */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5895 NULL, /**< dependencies */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5896 GAIM_PRIORITY_DEFAULT, /**< priority */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5897
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5898 "prpl-oscar", /**< id */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5899 "AIM/ICQ", /**< name */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5900 VERSION, /**< version */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5901 /** summary */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5902 N_("AIM/ICQ Protocol Plugin"),
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5903 /** description */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5904 N_("AIM/ICQ Protocol Plugin"),
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5905 NULL, /**< author */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5906 WEBSITE, /**< homepage */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5907
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5908 NULL, /**< load */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5909 NULL, /**< unload */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5910 NULL, /**< destroy */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5911
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5912 NULL, /**< ui_info */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5913 &prpl_info /**< extra_info */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5914 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5915
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5916 static void
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5917 __init_plugin(GaimPlugin *plugin)
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5918 {
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5919 struct proto_user_opt *puo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5920
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5921 puo = g_new0(struct proto_user_opt, 1);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5922 puo->label = g_strdup("Auth Host:");
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5923 puo->def = g_strdup("login.oscar.aol.com");
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5924 puo->pos = USEROPT_AUTH;
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5925 prpl_info.user_opts = g_list_append(prpl_info.user_opts, puo);
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5926
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5927 puo = g_new0(struct proto_user_opt, 1);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5928 puo->label = g_strdup("Auth Port:");
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5929 puo->def = g_strdup("5190");
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5930 puo->pos = USEROPT_AUTH;
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5931 prpl_info.user_opts = g_list_append(prpl_info.user_opts, puo);
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5932
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5933 my_protocol = plugin;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5934 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5935
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
5936 GAIM_INIT_PLUGIN(oscar, __init_plugin, info);

mercurial