src/protocols/oscar/oscar.c

Tue, 07 Jan 2003 21:19:05 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Tue, 07 Jan 2003 21:19:05 +0000
changeset 4230
b5393db78439
parent 4212
1a596d7f28ae
child 4233
82355aeb08f6
permissions
-rw-r--r--

[gaim-migrate @ 4475]
This is 128KB of raw kickassyness. AKA ICQ SSI.
I've rewritten all the important parts of ssi.c. Things should be better.

One thing I like a lot is that gaim will store the alias you assign to
buddies in your server list for both AIM and ICQ. WinICQ supports this,
but WinAIM doesn't. However, it doesn't seem to interfere with WinAIM,
and Gaim can still use it. I dunno, I just think it's neat.

Anyway, go nuts. Let me know if something doesn't work, because that's bad.

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>
c192fe7bafd1 [gaim-migrate @ 3793]
Luke Schierer <lschiere@pidgin.im>
parents: 3660
diff changeset
28 /*this must happen before sys/socket.h or freebsd won't compile*/
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
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
47 #include "multi.h"
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
48 #include "prpl.h"
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
49 #include "gaim.h"
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
50 #include "aim.h"
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
51 #include "proxy.h"
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
52
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
53 #ifdef _WIN32
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
54 #include "win32dep.h"
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
55 #endif
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
56
3490
48976e417e7a [gaim-migrate @ 3547]
Rob Flynn <gaim@robflynn.com>
parents: 3466
diff changeset
57 #include "pixmaps/protocols/oscar/ab.xpm"
48976e417e7a [gaim-migrate @ 3547]
Rob Flynn <gaim@robflynn.com>
parents: 3466
diff changeset
58 #include "pixmaps/protocols/oscar/admin_icon.xpm"
48976e417e7a [gaim-migrate @ 3547]
Rob Flynn <gaim@robflynn.com>
parents: 3466
diff changeset
59 #include "pixmaps/protocols/oscar/aol_icon.xpm"
48976e417e7a [gaim-migrate @ 3547]
Rob Flynn <gaim@robflynn.com>
parents: 3466
diff changeset
60 #include "pixmaps/protocols/oscar/away_icon.xpm"
48976e417e7a [gaim-migrate @ 3547]
Rob Flynn <gaim@robflynn.com>
parents: 3466
diff changeset
61 #include "pixmaps/protocols/oscar/dt_icon.xpm"
48976e417e7a [gaim-migrate @ 3547]
Rob Flynn <gaim@robflynn.com>
parents: 3466
diff changeset
62 #include "pixmaps/protocols/oscar/free_icon.xpm"
48976e417e7a [gaim-migrate @ 3547]
Rob Flynn <gaim@robflynn.com>
parents: 3466
diff changeset
63 #include "pixmaps/protocols/oscar/wireless_icon.xpm"
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
64
3579
a2ae3e1d5cb4 [gaim-migrate @ 3681]
Sean Egan <seanegan@pidgin.im>
parents: 3574
diff changeset
65 #include "pixmaps/protocols/icq/gnomeicu-online.xpm"
a2ae3e1d5cb4 [gaim-migrate @ 3681]
Sean Egan <seanegan@pidgin.im>
parents: 3574
diff changeset
66 #include "pixmaps/protocols/icq/gnomeicu-offline.xpm"
a2ae3e1d5cb4 [gaim-migrate @ 3681]
Sean Egan <seanegan@pidgin.im>
parents: 3574
diff changeset
67 #include "pixmaps/protocols/icq/gnomeicu-away.xpm"
a2ae3e1d5cb4 [gaim-migrate @ 3681]
Sean Egan <seanegan@pidgin.im>
parents: 3574
diff changeset
68 #include "pixmaps/protocols/icq/gnomeicu-dnd.xpm"
a2ae3e1d5cb4 [gaim-migrate @ 3681]
Sean Egan <seanegan@pidgin.im>
parents: 3574
diff changeset
69 #include "pixmaps/protocols/icq/gnomeicu-na.xpm"
a2ae3e1d5cb4 [gaim-migrate @ 3681]
Sean Egan <seanegan@pidgin.im>
parents: 3574
diff changeset
70 #include "pixmaps/protocols/icq/gnomeicu-occ.xpm"
a2ae3e1d5cb4 [gaim-migrate @ 3681]
Sean Egan <seanegan@pidgin.im>
parents: 3574
diff changeset
71 #include "pixmaps/protocols/icq/gnomeicu-ffc.xpm"
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
72
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
73 /* constants to identify proto_opts */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
74 #define USEROPT_AUTH 0
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
75 #define USEROPT_AUTHPORT 1
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
76
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
77 #define UC_AOL 0x02
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
78 #define UC_ADMIN 0x04
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
79 #define UC_UNCONFIRMED 0x08
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
80 #define UC_NORMAL 0x10
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
81 #define UC_AB 0x20
3079
e55c9a9cc4fc [gaim-migrate @ 3093]
Mark Doliner <markdoliner@pidgin.im>
parents: 3074
diff changeset
82 #define UC_WIRELESS 0x40
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
83
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
84 #define AIMHASHDATA "http://gaim.sourceforge.net/aim_data.php3"
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
85
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
86 /* For win32 compatability */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
87 G_MODULE_IMPORT GSList *connections;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
88 G_MODULE_IMPORT int report_idle;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
89
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
90 static int caps_aim = AIM_CAPS_CHAT | AIM_CAPS_BUDDYICON |
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
91 AIM_CAPS_IMIMAGE | AIM_CAPS_SENDFILE;
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
92
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
93 /* Set AIM caps, because Gaim can still do them over ICQ and
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
94 * Winicq doesn't mind. */
4154
e1c6a1bdcf5a [gaim-migrate @ 4382]
Mark Doliner <markdoliner@pidgin.im>
parents: 4152
diff changeset
95 static int caps_icq = AIM_CAPS_BUDDYICON | AIM_CAPS_IMIMAGE | AIM_CAPS_SENDFILE;
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
96 /* static int caps_icq = AIM_CAPS_ICQ; */
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
97 /* What does AIM_CAPS_ICQ actually mean? -SE */
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
98
2308
ea03e9136092 [gaim-migrate @ 2318]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2305
diff changeset
99 static fu8_t gaim_features[] = {0x01, 0x01, 0x01, 0x02};
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
100
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
101 struct oscar_data {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
102 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
103 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
104
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
105 guint cnpa;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
106 guint paspa;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
107 guint emlpa;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
108
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
109 GSList *create_rooms;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
110
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
111 gboolean conf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
112 gboolean reqemail;
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
113 gboolean setemail;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
114 char *email;
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
115 gboolean setnick;
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
116 char *newsn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
117 gboolean chpass;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
118 char *oldp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
119 char *newp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
120
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
121 GSList *oscar_chats;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
122 GSList *direct_ims;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
123 GSList *file_transfers;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
124 GSList *hasicons;
3600
776215788f43 [gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents: 3596
diff changeset
125 GHashTable *supports_tn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
126
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
127 gboolean killme;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
128 gboolean icq;
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
129 GSList *evilhack;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
130
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
131 struct {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
132 guint maxwatchers; /* max users who can watch you */
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
133 guint maxbuddies; /* max users you can watch */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
134 guint maxgroups; /* max groups in server list */
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
135 guint maxpermits; /* max users on permit list */
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
136 guint maxdenies; /* max users on deny list */
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
137 guint maxsiglen; /* max size (bytes) of profile */
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
138 guint maxawaymsglen; /* max size (bytes) of posted away message */
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
139 } rights;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
140 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
141
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
142 struct create_room {
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
143 char *name;
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
144 int exchange;
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
145 };
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
146
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
147 struct chat_connection {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
148 char *name;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
149 char *show; /* AOL did something funny to us */
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
150 fu16_t exchange;
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
151 fu16_t instance;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
152 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
153 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
154 int inpa;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
155 int id;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
156 struct gaim_connection *gc; /* i hate this. */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
157 struct conversation *cnv; /* bah. */
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
158 int maxlen;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
159 int maxvis;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
160 };
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 struct direct_im {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
163 struct gaim_connection *gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
164 char name[80];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
165 int watcher;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
166 aim_conn_t *conn;
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
167 gboolean connected;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
168 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
169
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
170 struct ask_direct {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
171 struct gaim_connection *gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
172 char *sn;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
173 char ip[64];
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
174 fu8_t cookie[8];
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
175 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
176
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
177 struct oscar_file_transfer {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
178 enum { OFT_SENDFILE_IN, OFT_SENDFILE_OUT } type;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
179 aim_conn_t *conn;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
180 struct file_transfer *xfer;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
181 char *sn;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
182 char ip[64];
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
183 fu16_t port;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
184 fu8_t cookie[8];
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
185 int totsize;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
186 int filesdone;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
187 int totfiles;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
188 int watcher;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
189 };
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
190
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
191 struct icon_req {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
192 char *user;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
193 time_t timestamp;
2196
f39aeaa5f829 [gaim-migrate @ 2206]
Adam Fritzler <mid@auk.cx>
parents: 2194
diff changeset
194 unsigned long length;
2191
a40e37f5bf27 [gaim-migrate @ 2201]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2172
diff changeset
195 unsigned long checksum;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
196 gboolean request;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
197 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
198
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
199 struct name_data {
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
200 struct gaim_connection *gc;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
201 gchar *name;
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
202 gchar *nick;
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
203 };
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
204
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
205 static void gaim_free_name_data(struct name_data *data) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
206 g_free(data->name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
207 g_free(data->nick);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
208 g_free(data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
209 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
210
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
211 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
212 GSList *d = od->direct_ims;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
213 char *n = g_strdup(normalize(who));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
214 struct direct_im *m = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
215
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
216 while (d) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
217 m = (struct direct_im *)d->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
218 if (!strcmp(n, normalize(m->name)))
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
219 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
220 m = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
221 d = d->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
222 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
223
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
224 g_free(n);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
225 return m;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
226 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
227
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
228 static char *extract_name(const char *name) {
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
229 char *tmp, *x;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
230 int i, j;
4120
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
231
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
232 if (!name)
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
233 return NULL;
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
234
4120
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
235 x = strchr(name, '-');
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
236
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
237 if (!x) return NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
238 x = strchr(++x, '-');
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
239 if (!x) return NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
240 tmp = g_strdup(++x);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
241
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
242 for (i = 0, j = 0; x[i]; i++) {
2361
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
243 char hex[3];
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
244 if (x[i] != '%') {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
245 tmp[j++] = x[i];
2361
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
246 continue;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
247 }
2361
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
248 strncpy(hex, x + ++i, 2); hex[2] = 0;
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
249 i++;
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
250 tmp[j++] = strtol(hex, NULL, 16);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
251 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
252
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
253 tmp[j] = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
254 return tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
255 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
256
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
257 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
258 GSList *g = ((struct oscar_data *)gc->proto_data)->oscar_chats;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
259 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
260
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
261 while (g) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
262 c = (struct chat_connection *)g->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
263 if (c->id == id)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
264 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
265 g = g->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
266 c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
267 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
268
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
269 return c;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
270 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
271
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
272 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
273 aim_conn_t *conn) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
274 GSList *g = ((struct oscar_data *)gc->proto_data)->oscar_chats;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
275 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
276
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
277 while (g) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
278 c = (struct chat_connection *)g->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
279 if (c->conn == conn)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
280 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
281 g = g->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
282 c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
283 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
284
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
285 return c;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
286 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
287
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
288 /* XXX there must be a better way than this.... -- wtm */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
289 static struct oscar_file_transfer *find_oft_by_conn(struct gaim_connection *gc,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
290 aim_conn_t *conn) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
291 GSList *g = ((struct oscar_data *)gc->proto_data)->file_transfers;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
292 struct oscar_file_transfer *f = NULL;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
293
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
294 while (g) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
295 f = (struct oscar_file_transfer *)g->data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
296 if (f->conn == conn)
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
297 break;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
298 g = g->next;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
299 f = NULL;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
300 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
301
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
302 return f;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
303 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
304
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
305 static struct oscar_file_transfer *find_oft_by_xfer(struct gaim_connection *gc,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
306 struct file_transfer *xfer) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
307 GSList *g = ((struct oscar_data *)gc->proto_data)->file_transfers;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
308 struct oscar_file_transfer *f = NULL;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
309
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
310 while (g) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
311 f = (struct oscar_file_transfer *)g->data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
312 if (f->xfer == xfer)
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
313 break;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
314 g = g->next;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
315 f = NULL;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
316 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
317
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
318 return f;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
319 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
320
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
321 static struct oscar_file_transfer *find_oft_by_cookie(struct gaim_connection *gc,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
322 const char *cookie) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
323 GSList *g = ((struct oscar_data *)gc->proto_data)->file_transfers;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
324 struct oscar_file_transfer *f = NULL;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
325
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
326 while (g) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
327 f = (struct oscar_file_transfer *)g->data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
328 if (!strncmp(f->cookie, cookie, 8))
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
329 break;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
330 g = g->next;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
331 f = NULL;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
332 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
333
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
334 return f;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
335 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
336
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
337 static int gaim_parse_auth_resp (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
338 static int gaim_parse_login (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
339 static int gaim_handle_redirect (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
340 static int gaim_info_change (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
341 static int gaim_account_confirm (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
342 static int gaim_parse_oncoming (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
343 static int gaim_parse_offgoing (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
344 static int gaim_parse_incoming_im(aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
345 static int gaim_parse_misses (aim_session_t *, aim_frame_t *, ...);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
346 static int gaim_parse_clientauto (aim_session_t *, aim_frame_t *, ...);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
347 static int gaim_parse_user_info (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
348 static int gaim_parse_motd (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
349 static int gaim_chatnav_info (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
350 static int gaim_chat_join (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
351 static int gaim_chat_leave (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
352 static int gaim_chat_info_update (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
353 static int gaim_chat_incoming_msg(aim_session_t *, aim_frame_t *, ...);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
354 static int gaim_email_parseupdate(aim_session_t *, aim_frame_t *, ...);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
355 static int gaim_parse_msgack (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
356 static int gaim_parse_ratechange (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
357 static int gaim_parse_evilnotify (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
358 static int gaim_parse_searcherror(aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
359 static int gaim_parse_searchreply(aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
360 static int gaim_bosrights (aim_session_t *, aim_frame_t *, ...);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
361 static int conninitdone_admin (aim_session_t *, aim_frame_t *, ...);
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
362 static int conninitdone_bos (aim_session_t *, aim_frame_t *, ...);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
363 static int conninitdone_chatnav (aim_session_t *, aim_frame_t *, ...);
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
364 static int conninitdone_chat (aim_session_t *, aim_frame_t *, ...);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
365 static int conninitdone_email (aim_session_t *, aim_frame_t *, ...);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
366 static int gaim_parse_msgerr (aim_session_t *, aim_frame_t *, ...);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
367 static int gaim_parse_mtn (aim_session_t *, aim_frame_t *, ...);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
368 static int gaim_parse_locaterights(aim_session_t *, aim_frame_t *, ...);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
369 static int gaim_parse_buddyrights(aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
370 static int gaim_parse_locerr (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
371 static int gaim_icbm_param_info (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
372 static int gaim_parse_genericerr (aim_session_t *, aim_frame_t *, ...);
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
373 static int gaim_memrequest (aim_session_t *, aim_frame_t *, ...);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
374 static int gaim_selfinfo (aim_session_t *, aim_frame_t *, ...);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
375 static int gaim_offlinemsg (aim_session_t *, aim_frame_t *, ...);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
376 static int gaim_offlinemsgdone (aim_session_t *, aim_frame_t *, ...);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
377 static int gaim_icqsimpleinfo (aim_session_t *, aim_frame_t *, ...);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
378 static int gaim_icqallinfo (aim_session_t *, aim_frame_t *, ...);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
379 static int gaim_popup (aim_session_t *, aim_frame_t *, ...);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
380 #ifndef NOSSI
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
381 static int gaim_ssi_parserights (aim_session_t *, aim_frame_t *, ...);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
382 static int gaim_ssi_parselist (aim_session_t *, aim_frame_t *, ...);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
383 static int gaim_ssi_parseack (aim_session_t *, aim_frame_t *, ...);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
384 static int gaim_ssi_authgiven (aim_session_t *, aim_frame_t *, ...);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
385 static int gaim_ssi_authrequest (aim_session_t *, aim_frame_t *, ...);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
386 static int gaim_ssi_authreply (aim_session_t *, aim_frame_t *, ...);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
387 static int gaim_ssi_gotadded (aim_session_t *, aim_frame_t *, ...);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
388 #endif
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
389
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
390 static int gaim_directim_initiate(aim_session_t *, aim_frame_t *, ...);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
391 static int gaim_directim_incoming(aim_session_t *, aim_frame_t *, ...);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
392 static int gaim_directim_typing (aim_session_t *, aim_frame_t *, ...);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
393 static int gaim_update_ui (aim_session_t *, aim_frame_t *, ...);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
394
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
395 static int oscar_file_transfer_do(aim_session_t *, aim_frame_t *, ...);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
396 static void oscar_file_transfer_disconnect(aim_session_t *,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
397 aim_conn_t *);
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
398 static void oscar_file_transfer_cancel(struct gaim_connection *,
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
399 struct file_transfer *);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
400 static int oscar_sendfile_request(aim_session_t *sess,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
401 struct oscar_file_transfer *oft);
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
402 static int oscar_sendfile_timeout(aim_session_t *sess, aim_frame_t *fr, ...);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
403
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
404 static fu32_t check_encoding(const char *utf8);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
405 static fu32_t parse_encoding(const char *enc);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
406
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
407 static char *msgerrreason[] = {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
408 N_("Invalid error"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
409 N_("Invalid SNAC"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
410 N_("Rate to host"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
411 N_("Rate to client"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
412 N_("Not logged in"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
413 N_("Service unavailable"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
414 N_("Service not defined"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
415 N_("Obsolete SNAC"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
416 N_("Not supported by host"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
417 N_("Not supported by client"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
418 N_("Refused by client"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
419 N_("Reply too big"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
420 N_("Responses lost"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
421 N_("Request denied"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
422 N_("Busted SNAC payload"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
423 N_("Insufficient rights"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
424 N_("In local permit/deny"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
425 N_("Too evil (sender)"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
426 N_("Too evil (receiver)"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
427 N_("User temporarily unavailable"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
428 N_("No match"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
429 N_("List overflow"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
430 N_("Request ambiguous"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
431 N_("Queue full"),
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
432 N_("Not while on AOL")
2086
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 static int msgerrreasonlen = 25;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
435
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
436 /*
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
437 * This is called to clean up whenever a file transfer is no longer in progress,
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
438 * whether because it finished sucessfully, it was canceled, or there was an error.
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
439 */
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
440 static void oscar_file_transfer_disconnect(aim_session_t *sess, aim_conn_t *conn) {
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
441 struct gaim_connection *gc = sess->aux_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
442 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
443 struct oscar_file_transfer *oft = find_oft_by_conn(gc,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
444 conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
445
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
446 od->file_transfers = g_slist_remove(od->file_transfers, oft);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
447
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
448 if (oft->watcher) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
449 gaim_input_remove(oft->watcher);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
450 oft->watcher = 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
451 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
452
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
453 aim_conn_kill(sess, &conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
454
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
455 g_free(oft->sn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
456 g_free(oft);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
457 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
458
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
459 static void gaim_directim_disconnect(aim_session_t *sess, aim_conn_t *conn) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
460 struct gaim_connection *gc = sess->aux_data;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
461 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
462 struct conversation *cnv;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
463 struct direct_im *dim;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
464 char *sn;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
465 char buf[256];
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
466
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
467 sn = g_strdup(aim_directim_getsn(conn));
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
468
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
469 debug_printf("%s disconnected Direct IM.\n", sn);
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 dim = find_direct_im(od, sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
472 od->direct_ims = g_slist_remove(od->direct_ims, dim);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
473 gaim_input_remove(dim->watcher);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
474
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
475 if (dim->connected)
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
476 g_snprintf(buf, sizeof buf, _("Direct IM with %s closed"), sn);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
477 else
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
478 g_snprintf(buf, sizeof buf, _("Direct IM with %s failed"), sn);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
479
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
480 if ((cnv = find_conversation(sn)))
2856
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2833
diff changeset
481 write_to_conv(cnv, buf, WFLAG_SYSTEM, NULL, time(NULL), -1);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
482 update_progress(cnv, 100);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
483
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
484 g_free(dim); /* I guess? I don't see it anywhere else... -- mid */
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
485 g_free(sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
486
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
487 return;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
488 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
489
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
490 static void oscar_callback(gpointer data, gint source,
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
491 GaimInputCondition condition) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
492 aim_conn_t *conn = (aim_conn_t *)data;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
493 aim_session_t *sess = aim_conn_getsess(conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
494 struct gaim_connection *gc = sess ? sess->aux_data : NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
495 struct oscar_data *odata;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
496
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
497 if (!gc) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
498 /* gc is null. we return, else we seg SIGSEG on next line. */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
499 debug_printf("oscar callback for closed connection (1).\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
500 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
501 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
502
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
503 odata = (struct oscar_data *)gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
504
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
505 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
506 /* oh boy. this is probably bad. i guess the only thing we
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
507 * can really do is return? */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
508 debug_printf("oscar callback for closed connection (2).\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
509 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
510 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
511
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
512 if (condition & GAIM_INPUT_READ) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
513 if (conn->type == AIM_CONN_TYPE_RENDEZVOUS_OUT) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
514 debug_printf("got information on rendezvous\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
515 if (aim_handlerendconnect(odata->sess, conn) < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
516 debug_printf(_("connection error (rend)\n"));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
517 aim_conn_kill(odata->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
518 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
519 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
520 if (aim_get_command(odata->sess, conn) >= 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
521 aim_rxdispatch(odata->sess);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
522 if (odata->killme)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
523 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
524 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
525 if ((conn->type == AIM_CONN_TYPE_BOS) ||
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
526 !(aim_getconn_type(odata->sess, AIM_CONN_TYPE_BOS))) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
527 debug_printf(_("major connection error\n"));
3074
b6510843df8f [gaim-migrate @ 3088]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3068
diff changeset
528 hide_login_progress_error(gc, _("Disconnected."));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
529 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
530 } else if (conn->type == AIM_CONN_TYPE_CHAT) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
531 struct chat_connection *c = find_oscar_chat_by_conn(gc, conn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
532 char buf[BUF_LONG];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
533 debug_printf("disconnected from chat room %s\n", c->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
534 c->conn = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
535 if (c->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
536 gaim_input_remove(c->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
537 c->inpa = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
538 c->fd = -1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
539 aim_conn_kill(odata->sess, &conn);
3574
b4839ec94817 [gaim-migrate @ 3673]
Luke Schierer <lschiere@pidgin.im>
parents: 3572
diff changeset
540 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
541 do_error_dialog(buf, NULL, GAIM_ERROR);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
542 } else if (conn->type == AIM_CONN_TYPE_CHATNAV) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
543 if (odata->cnpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
544 gaim_input_remove(odata->cnpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
545 odata->cnpa = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
546 debug_printf("removing chatnav input watcher\n");
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
547 while (odata->create_rooms) {
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
548 struct create_room *cr = odata->create_rooms->data;
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
549 g_free(cr->name);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
550 odata->create_rooms =
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
551 g_slist_remove(odata->create_rooms, cr);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
552 g_free(cr);
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
553 do_error_dialog(_("Chat is currently unavailable"), NULL, GAIM_ERROR);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
554 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
555 aim_conn_kill(odata->sess, &conn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
556 } else if (conn->type == AIM_CONN_TYPE_AUTH) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
557 if (odata->paspa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
558 gaim_input_remove(odata->paspa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
559 odata->paspa = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
560 debug_printf("removing authconn input watcher\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
561 aim_conn_kill(odata->sess, &conn);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
562 } else if (conn->type == AIM_CONN_TYPE_EMAIL) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
563 if (odata->emlpa > 0)
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
564 gaim_input_remove(odata->emlpa);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
565 odata->emlpa = 0;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
566 debug_printf("removing email input watcher\n");
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
567 aim_conn_kill(odata->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
568 } else if (conn->type == AIM_CONN_TYPE_RENDEZVOUS) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
569 if (conn->subtype == AIM_CONN_SUBTYPE_OFT_DIRECTIM)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
570 gaim_directim_disconnect(odata->sess, conn);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
571 else if (conn->subtype == AIM_CONN_SUBTYPE_OFT_SENDFILE) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
572 struct oscar_file_transfer *oft = find_oft_by_conn(gc, conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
573 if (oft) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
574 transfer_abort(oft->xfer, _("Buddy canceled transfer"));
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
575 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
576 oscar_file_transfer_disconnect(odata->sess, conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
577 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
578 else {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
579 debug_printf("No handler for rendezvous disconnect (%d).\n",
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
580 source);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
581 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
582 aim_conn_kill(odata->sess, &conn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
583 } else {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
584 debug_printf("holy crap! generic connection error! %hu\n",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
585 conn->type);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
586 aim_conn_kill(odata->sess, &conn);
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 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
591 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
592
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
593 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
594 char *s = g_strdup_vprintf(format, va);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
595 char buf[256];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
596 char *t;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
597 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
598
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
599 g_snprintf(buf, sizeof(buf), "%s %d: ", gc->username, level);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
600 t = g_strconcat(buf, s, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
601 debug_printf(t);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
602 if (t[strlen(t)-1] != '\n')
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
603 debug_printf("\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
604 g_free(t);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
605 g_free(s);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
606 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
607
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
608 static void oscar_login_connect(gpointer data, gint source, GaimInputCondition cond)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
609 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
610 struct gaim_connection *gc = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
611 struct oscar_data *odata;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
612 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
613 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
614
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
615 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
616 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
617 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
618 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
619
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
620 odata = gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
621 sess = odata->sess;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
622 conn = aim_getconn_type_all(sess, AIM_CONN_TYPE_AUTH);
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);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
631 gc->inpa = gaim_input_add(conn->fd, GAIM_INPUT_READ,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
632 oscar_callback, conn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
633 debug_printf(_("Password sent, waiting for response\n"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
634 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
635
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
636 static void oscar_login(struct aim_user *user) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
637 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
638 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
639 char buf[256];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
640 struct gaim_connection *gc = new_gaim_conn(user);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
641 struct oscar_data *odata = gc->proto_data = g_new0(struct oscar_data, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
642
2589
9f90783f8bdd [gaim-migrate @ 2602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2507
diff changeset
643 if (isdigit(*user->username)) {
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
644 odata->icq = TRUE;
2589
9f90783f8bdd [gaim-migrate @ 2602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2507
diff changeset
645 /* this is odd but it's necessary for a proper do_import and do_export */
9f90783f8bdd [gaim-migrate @ 2602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2507
diff changeset
646 gc->protocol = PROTO_ICQ;
3064
d20bc95cf928 [gaim-migrate @ 3078]
Sean Egan <seanegan@pidgin.im>
parents: 3063
diff changeset
647 gc->password[8] = 0;
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
648 } else {
2590
fecf2ce04325 [gaim-migrate @ 2603]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2589
diff changeset
649 gc->protocol = PROTO_TOC;
2918
f4efca1781b7 [gaim-migrate @ 2931]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2916
diff changeset
650 gc->flags |= OPT_CONN_HTML;
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
651 gc->flags |= OPT_CONN_AUTO_RESP;
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
652 }
3600
776215788f43 [gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents: 3596
diff changeset
653 odata->supports_tn = g_hash_table_new(g_str_hash, g_str_equal);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
654
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
655 sess = g_new0(aim_session_t, 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
656
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
657 aim_session_init(sess, AIM_SESS_FLAGS_NONBLOCKCONNECT, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
658 aim_setdebuggingcb(sess, oscar_debug);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
659
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
660 /* 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
661 * see if things need to be sent. */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
662 aim_tx_setenqueue(sess, AIM_TX_IMMEDIATE, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
663 odata->sess = sess;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
664 sess->aux_data = gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
665
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
666 conn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
667 if (conn == NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
668 debug_printf(_("internal connection error\n"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
669 hide_login_progress(gc, _("Unable to login to AIM"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
670 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
671 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
672 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
673
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
674 g_snprintf(buf, sizeof(buf), _("Signon: %s"), gc->username);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
675 set_login_progress(gc, 2, buf);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
676
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
677 aim_conn_addhandler(sess, conn, 0x0017, 0x0007, gaim_parse_login, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
678 aim_conn_addhandler(sess, conn, 0x0017, 0x0003, gaim_parse_auth_resp, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
679
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
680 conn->status |= AIM_CONN_STATUS_INPROGRESS;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
681 conn->fd = proxy_connect(user->proto_opt[USEROPT_AUTH][0] ?
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
682 user->proto_opt[USEROPT_AUTH] : FAIM_LOGIN_SERVER,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
683 user->proto_opt[USEROPT_AUTHPORT][0] ?
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
684 atoi(user->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
685 oscar_login_connect, gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
686 if (conn->fd < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
687 hide_login_progress(gc, _("Couldn't connect to host"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
688 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
689 return;
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 aim_request_login(sess, conn, gc->username);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
692 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
693
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
694 static void oscar_close(struct gaim_connection *gc) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
695 struct oscar_data *odata = (struct oscar_data *)gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
696
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
697 while (odata->oscar_chats) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
698 struct chat_connection *n = odata->oscar_chats->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
699 if (n->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
700 gaim_input_remove(n->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
701 g_free(n->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
702 g_free(n->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
703 odata->oscar_chats = g_slist_remove(odata->oscar_chats, n);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
704 g_free(n);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
705 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
706 while (odata->direct_ims) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
707 struct direct_im *n = odata->direct_ims->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
708 if (n->watcher > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
709 gaim_input_remove(n->watcher);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
710 odata->direct_ims = g_slist_remove(odata->direct_ims, n);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
711 g_free(n);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
712 }
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
713 while (odata->file_transfers) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
714 struct oscar_file_transfer *n = odata->file_transfers->data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
715 if (n->watcher > 0)
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
716 gaim_input_remove(n->watcher);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
717 odata->file_transfers = g_slist_remove(odata->file_transfers, n);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
718 g_free(n);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
719 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
720 while (odata->hasicons) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
721 struct icon_req *n = odata->hasicons->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
722 g_free(n->user);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
723 odata->hasicons = g_slist_remove(odata->hasicons, n);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
724 g_free(n);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
725 }
3600
776215788f43 [gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents: 3596
diff changeset
726 g_hash_table_destroy(odata->supports_tn);
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
727 while (odata->evilhack) {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
728 g_free(odata->evilhack->data);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
729 odata->evilhack = g_slist_remove(odata->evilhack, odata->evilhack->data);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
730 }
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
731 while (odata->create_rooms) {
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
732 struct create_room *cr = odata->create_rooms->data;
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
733 g_free(cr->name);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
734 odata->create_rooms = g_slist_remove(odata->create_rooms, cr);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
735 g_free(cr);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
736 }
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
737 if (odata->email)
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
738 g_free(odata->email);
2754
1deb656ee517 [gaim-migrate @ 2767]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2742
diff changeset
739 if (odata->newp)
1deb656ee517 [gaim-migrate @ 2767]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2742
diff changeset
740 g_free(odata->newp);
1deb656ee517 [gaim-migrate @ 2767]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2742
diff changeset
741 if (odata->oldp)
1deb656ee517 [gaim-migrate @ 2767]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2742
diff changeset
742 g_free(odata->oldp);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
743 if (gc->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
744 gaim_input_remove(gc->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
745 if (odata->cnpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
746 gaim_input_remove(odata->cnpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
747 if (odata->paspa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
748 gaim_input_remove(odata->paspa);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
749 if (odata->emlpa > 0)
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
750 gaim_input_remove(odata->emlpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
751 aim_session_kill(odata->sess);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
752 g_free(odata->sess);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
753 odata->sess = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
754 g_free(gc->proto_data);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
755 gc->proto_data = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
756 debug_printf(_("Signed off.\n"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
757 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
758
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
759 static void oscar_bos_connect(gpointer data, gint source, GaimInputCondition cond) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
760 struct gaim_connection *gc = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
761 struct oscar_data *odata;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
762 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
763 aim_conn_t *bosconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
764
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
765 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
766 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
767 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
768 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
769
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
770 odata = gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
771 sess = odata->sess;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
772 bosconn = odata->conn;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
773
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
774 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
775 hide_login_progress(gc, _("Could Not Connect"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
776 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
777 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
778 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
779
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
780 aim_conn_completeconnect(sess, bosconn);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
781 gc->inpa = gaim_input_add(bosconn->fd, GAIM_INPUT_READ,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
782 oscar_callback, bosconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
783 set_login_progress(gc, 4, _("Connection established, cookie sent"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
784 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
785
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
786 static void oscar_ask_send_file(struct gaim_connection *gc, char *destsn) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
787 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
788
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
789 struct oscar_file_transfer *oft = g_new0(struct oscar_file_transfer,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
790 1);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
791
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
792 oft->type = OFT_SENDFILE_OUT;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
793 oft->sn = g_strdup(destsn);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
794
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
795 od->file_transfers = g_slist_append(od->file_transfers, oft);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
796
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
797 oft->xfer = transfer_out_add(gc, oft->sn);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
798 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
799
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
800 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
801 va_list ap;
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
802 struct aim_authresp_info *info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
803 int i; char *host; int port;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
804 struct aim_user *user;
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
805 aim_conn_t *bosconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
806
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
807 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
808 struct oscar_data *od = gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
809 user = gc->user;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
810 port = user->proto_opt[USEROPT_AUTHPORT][0] ?
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
811 atoi(user->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
812
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
813 va_start(ap, fr);
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
814 info = va_arg(ap, struct aim_authresp_info *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
815 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
816
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
817 debug_printf("inside auth_resp (Screen name: %s)\n", info->sn);
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
818
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
819 if (info->errorcode || !info->bosip || !info->cookie) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
820 char buf[256];
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
821 switch (info->errorcode) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
822 case 0x05:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
823 /* Incorrect nick/password */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
824 hide_login_progress(gc, _("Incorrect nickname or password."));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
825 plugin_event(event_error, (void *)980, 0, 0, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
826 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
827 case 0x11:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
828 /* Suspended account */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
829 hide_login_progress(gc, _("Your account is currently suspended."));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
830 break;
3498
3f6ce04ea3ad [gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents: 3490
diff changeset
831 case 0x14:
3f6ce04ea3ad [gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents: 3490
diff changeset
832 /* service temporarily unavailable */
3f6ce04ea3ad [gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents: 3490
diff changeset
833 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
834 break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
835 case 0x18:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
836 /* connecting too frequently */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
837 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
838 plugin_event(event_error, (void *)983, 0, 0, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
839 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
840 case 0x1c:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
841 /* client too old */
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
842 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
843 hide_login_progress(gc, buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
844 plugin_event(event_error, (void *)989, 0, 0, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
845 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
846 default:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
847 hide_login_progress(gc, _("Authentication Failed"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
848 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
849 }
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
850 debug_printf("Login Error Code 0x%04hx\n", info->errorcode);
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
851 debug_printf("Error URL: %s\n", info->errorurl);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
852 od->killme = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
853 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
854 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
855
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
856
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
857 debug_printf("Reg status: %hu\n", info->regstatus);
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
858 if (info->email) {
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
859 debug_printf("Email: %s\n", info->email);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
860 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
861 debug_printf("Email is NULL\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
862 }
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
863 debug_printf("BOSIP: %s\n", info->bosip);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
864 debug_printf("Closing auth connection...\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
865 aim_conn_kill(sess, &fr->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
866
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
867 bosconn = aim_newconn(sess, AIM_CONN_TYPE_BOS, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
868 if (bosconn == NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
869 hide_login_progress(gc, _("Internal Error"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
870 od->killme = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
871 return 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
872 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
873
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
874 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
875 aim_conn_addhandler(sess, bosconn, 0x0009, 0x0003, gaim_bosrights, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
876 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
877 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
878 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
879 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
880 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
881 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
882 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
883 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
884 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
885 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
886 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
887 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
888 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
889 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
890 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
891 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
892 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
893 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
894 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
895 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
896 aim_conn_addhandler(sess, bosconn, 0x0001, 0x0001, gaim_parse_genericerr, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
897 aim_conn_addhandler(sess, bosconn, 0x0003, 0x0001, gaim_parse_genericerr, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
898 aim_conn_addhandler(sess, bosconn, 0x0009, 0x0001, gaim_parse_genericerr, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
899 aim_conn_addhandler(sess, bosconn, 0x0001, 0x001f, gaim_memrequest, 0);
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
900 aim_conn_addhandler(sess, bosconn, 0x0001, 0x000f, gaim_selfinfo, 0);
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
901 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
902 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
903 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_POP, 0x0002, gaim_popup, 0);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
904 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_SIMPLEINFO, gaim_icqsimpleinfo, 0);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
905 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_ALLINFO, gaim_icqallinfo, 0);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
906 #ifndef NOSSI
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
907 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
908 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
909 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
910 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
911 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
912 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
913 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
914 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
915 #endif
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
916 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_MSGTIMEOUT, oscar_sendfile_timeout, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
917
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
918 ((struct oscar_data *)gc->proto_data)->conn = bosconn;
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
919 for (i = 0; i < (int)strlen(info->bosip); i++) {
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
920 if (info->bosip[i] == ':') {
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
921 port = atoi(&(info->bosip[i+1]));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
922 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
923 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
924 }
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
925 host = g_strndup(info->bosip, i);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
926 bosconn->status |= AIM_CONN_STATUS_INPROGRESS;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
927 bosconn->fd = proxy_connect(host, port, oscar_bos_connect, gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
928 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
929 if (bosconn->fd < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
930 hide_login_progress(gc, _("Could Not Connect"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
931 od->killme = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
932 return 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
933 }
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
934 aim_sendcookie(sess, bosconn, info->cookie);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
935 gaim_input_remove(gc->inpa);
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
936
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
937 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
938 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
939
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
940 struct pieceofcrap {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
941 struct gaim_connection *gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
942 unsigned long offset;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
943 unsigned long len;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
944 char *modname;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
945 int fd;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
946 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
947 unsigned int inpa;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
948 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
949
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
950 static void damn_you(gpointer data, gint source, GaimInputCondition c)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
951 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
952 struct pieceofcrap *pos = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
953 struct oscar_data *od = pos->gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
954 char in = '\0';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
955 int x = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
956 unsigned char m[17];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
957
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
958 while (read(pos->fd, &in, 1) == 1) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
959 if (in == '\n')
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
960 x++;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
961 else if (in != '\r')
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
962 x = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
963 if (x == 2)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
964 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
965 in = '\0';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
966 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
967 if (in != '\n') {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
968 char buf[256];
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
969 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
970 "this is fixed. Check %s for updates."), WEBSITE);
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
971 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
972 buf, GAIM_WARNING);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
973 gaim_input_remove(pos->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
974 close(pos->fd);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
975 g_free(pos);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
976 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
977 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
978 read(pos->fd, m, 16);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
979 m[16] = '\0';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
980 debug_printf("Sending hash: ");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
981 for (x = 0; x < 16; x++)
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
982 debug_printf("%02hhx ", (unsigned char)m[x]);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
983 debug_printf("\n");
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
984 gaim_input_remove(pos->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
985 close(pos->fd);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
986 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
987 g_free(pos);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
988 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
989
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
990 static void straight_to_hell(gpointer data, gint source, GaimInputCondition cond) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
991 struct pieceofcrap *pos = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
992 char buf[BUF_LONG];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
993
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
994 if (source < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
995 char buf[256];
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
996 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
997 "this is fixed. Check %s for updates."), WEBSITE);
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
998 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
999 buf, GAIM_WARNING);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1000 if (pos->modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1001 g_free(pos->modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1002 g_free(pos);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1003 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1004 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1005
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1006 g_snprintf(buf, sizeof(buf), "GET " AIMHASHDATA
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1007 "?offset=%ld&len=%ld&modname=%s HTTP/1.0\n\n",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1008 pos->offset, pos->len, pos->modname ? pos->modname : "");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1009 write(pos->fd, buf, strlen(buf));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1010 if (pos->modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1011 g_free(pos->modname);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1012 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
1013 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1014 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1015
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1016 /* size of icbmui.ocm, the largest module in AIM 3.5 */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1017 #define AIM_MAX_FILE_SIZE 98304
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1018
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1019 int gaim_memrequest(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1020 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1021 struct pieceofcrap *pos;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1022 fu32_t offset, len;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1023 char *modname;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1024 int fd;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1025
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1026 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
1027 offset = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
1028 len = va_arg(ap, fu32_t);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1029 modname = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1030 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1031
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1032 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
1033 if (len == 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1034 debug_printf("len is 0, hashing NULL\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1035 aim_sendmemblock(sess, fr->conn, offset, len, NULL,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1036 AIM_SENDMEMBLOCK_FLAG_ISREQUEST);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1037 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1038 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1039 /* 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
1040 if (offset > AIM_MAX_FILE_SIZE || len > AIM_MAX_FILE_SIZE) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1041 char *buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1042 int i = 8;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1043 if (modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1044 i += strlen(modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1045 buf = g_malloc(i);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1046 i = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1047 if (modname) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1048 memcpy(buf, modname, strlen(modname));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1049 i += strlen(modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1050 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1051 buf[i++] = offset & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1052 buf[i++] = (offset >> 8) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1053 buf[i++] = (offset >> 16) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1054 buf[i++] = (offset >> 24) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1055 buf[i++] = len & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1056 buf[i++] = (len >> 8) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1057 buf[i++] = (len >> 16) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1058 buf[i++] = (len >> 24) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1059 debug_printf("len + offset is invalid, hashing request\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1060 aim_sendmemblock(sess, command->conn, offset, i, buf, AIM_SENDMEMBLOCK_FLAG_ISREQUEST);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1061 g_free(buf);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1062 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1063 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1064 */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1065
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1066 pos = g_new0(struct pieceofcrap, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1067 pos->gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1068 pos->conn = fr->conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1069
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1070 pos->offset = offset;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1071 pos->len = len;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1072 pos->modname = modname ? g_strdup(modname) : NULL;
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 fd = proxy_connect("gaim.sourceforge.net", 80, straight_to_hell, pos);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1075 if (fd < 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1076 char buf[256];
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1077 if (pos->modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1078 g_free(pos->modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1079 g_free(pos);
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1080 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
1081 "this is fixed. Check %s for updates."), WEBSITE);
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
1082 do_error_dialog(_("Gaim was Unable to get valid login hash."),
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
1083 buf, GAIM_WARNING);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1084 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1085 pos->fd = fd;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1087 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1088 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1089
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1090 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
1091 char *key;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1092 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1093 struct gaim_connection *gc = sess->aux_data;
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1094 struct oscar_data *odata = gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1095
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1096 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1097 key = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1098 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1099
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1100 if (odata->icq) {
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1101 struct client_info_s info = CLIENTINFO_ICQ_KNOWNGOOD;
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1102 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
1103 } else {
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1104 #if 0
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1105 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
1106 #endif
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1107 struct client_info_s info = CLIENTINFO_AIM_KNOWNGOOD;
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1108 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
1109 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1110
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1111 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1112 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1113
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1114 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
1115 struct gaim_connection *gc = sess->aux_data;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1116 struct chat_connection *chatcon;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1117 static int id = 1;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1118
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1119 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
1120 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
1121 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
1122 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
1123 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
1124
2672
5c9b7617a1f3 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
1125 aim_clientready(sess, fr->conn);
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1126
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1127 chatcon = find_oscar_chat_by_conn(gc, fr->conn);
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1128 chatcon->id = id;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1129 chatcon->cnv = serv_got_joined_chat(gc, id++, chatcon->show);
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1130
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1131 return 1;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1132 }
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1133
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1134 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
1135
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1136 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
1137 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
1138
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1139 aim_clientready(sess, fr->conn);
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1140
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1141 aim_chatnav_reqrights(sess, fr->conn);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1142
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1143 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1144 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1145
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1146 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
1147
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1148 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
1149 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
1150
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1151 aim_email_sendcookies(sess, fr->conn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1152 aim_email_activate(sess, fr->conn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1153 aim_clientready(sess, fr->conn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1154
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1155 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1156 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1157
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1158 static void oscar_chatnav_connect(gpointer data, gint source, GaimInputCondition cond) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1159 struct gaim_connection *gc = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1160 struct oscar_data *odata;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1161 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1162 aim_conn_t *tstconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1163
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1164 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1165 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1166 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1167 }
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 odata = gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1170 sess = odata->sess;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1171 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_CHATNAV);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1172
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1173 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1174 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1175 debug_printf("unable to connect to chatnav server\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1176 return;
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
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1179 aim_conn_completeconnect(sess, tstconn);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1180 odata->cnpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ,
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1181 oscar_callback, tstconn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1182 debug_printf("chatnav: connected\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1183 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1184
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1185 static void oscar_auth_connect(gpointer data, gint source, GaimInputCondition cond)
2086
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 struct gaim_connection *gc = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1188 struct oscar_data *odata;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1189 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1190 aim_conn_t *tstconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1191
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1192 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1193 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1194 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1195 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1196
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1197 odata = gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1198 sess = odata->sess;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1199 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_AUTH);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1200
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1201 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1202 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1203 debug_printf("unable to connect to authorizer\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1204 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1205 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1206
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1207 aim_conn_completeconnect(sess, tstconn);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1208 odata->paspa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1209 oscar_callback, tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1210 debug_printf("chatnav: connected\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1211 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1212
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1213 static void oscar_chat_connect(gpointer data, gint source, GaimInputCondition cond)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1214 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1215 struct chat_connection *ccon = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1216 struct gaim_connection *gc = ccon->gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1217 struct oscar_data *odata;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1218 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1219 aim_conn_t *tstconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1220
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1221 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1222 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1223 g_free(ccon->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1224 g_free(ccon->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1225 g_free(ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1226 return;
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
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1229 odata = gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1230 sess = odata->sess;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1231 tstconn = ccon->conn;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1232
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1233 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1234 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1235 g_free(ccon->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1236 g_free(ccon->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1237 g_free(ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1238 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1239 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1240
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1241 aim_conn_completeconnect(sess, ccon->conn);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1242 ccon->inpa = gaim_input_add(tstconn->fd,
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1243 GAIM_INPUT_READ,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1244 oscar_callback, tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1245 odata->oscar_chats = g_slist_append(odata->oscar_chats, ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1246 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1247
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1248 static void oscar_email_connect(gpointer data, gint source, GaimInputCondition cond) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1249 struct gaim_connection *gc = data;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1250 struct oscar_data *odata;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1251 aim_session_t *sess;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1252 aim_conn_t *tstconn;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1253
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1254 if (!g_slist_find(connections, gc)) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1255 close(source);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1256 return;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1257 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1258
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1259 odata = gc->proto_data;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1260 sess = odata->sess;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1261 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_EMAIL);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1262
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1263 if (source < 0) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1264 aim_conn_kill(sess, &tstconn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1265 debug_printf("unable to connect to email server\n");
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1266 return;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1267 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1268
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1269 aim_conn_completeconnect(sess, tstconn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1270 odata->emlpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1271 debug_printf("email: connected\n");
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1272 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1273
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1274 /* 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
1275 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
1276 va_list ap;
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1277 struct aim_redirect_data *redir;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1278 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1279 struct aim_user *user = gc->user;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1280 aim_conn_t *tstconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1281 int i;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1282 char *host;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1283 int port;
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 port = user->proto_opt[USEROPT_AUTHPORT][0] ?
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1286 atoi(user->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1287
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1288 va_start(ap, fr);
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1289 redir = va_arg(ap, struct aim_redirect_data *);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1290 va_end(ap);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1291
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1292 for (i = 0; i < (int)strlen(redir->ip); i++) {
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1293 if (redir->ip[i] == ':') {
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1294 port = atoi(&(redir->ip[i+1]));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1295 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1296 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1297 }
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1298 host = g_strndup(redir->ip, i);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1299
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1300 switch(redir->group) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1301 case 0x7: /* Authorizer */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1302 debug_printf("Reconnecting with authorizor...\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1303 tstconn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1304 if (tstconn == NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1305 debug_printf("unable to reconnect with authorizer\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1306 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1307 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1308 }
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1309 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
1310 aim_conn_addhandler(sess, tstconn, 0x0007, 0x0003, gaim_info_change, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1311 aim_conn_addhandler(sess, tstconn, 0x0007, 0x0005, gaim_info_change, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1312 aim_conn_addhandler(sess, tstconn, 0x0007, 0x0007, gaim_account_confirm, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1313
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1314 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1315 tstconn->fd = proxy_connect(host, port, oscar_auth_connect, gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1316 if (tstconn->fd < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1317 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1318 debug_printf("unable to reconnect with authorizer\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1319 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1320 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1321 }
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1322 aim_sendcookie(sess, tstconn, redir->cookie);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1323 break;
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1324
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1325 case 0xd: /* ChatNav */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1326 tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHATNAV, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1327 if (tstconn == NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1328 debug_printf("unable to connect to chatnav server\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1329 g_free(host);
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 }
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1332 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
1333
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1334 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1335 tstconn->fd = proxy_connect(host, port, oscar_chatnav_connect, gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1336 if (tstconn->fd < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1337 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1338 debug_printf("unable to connect to chatnav server\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1339 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1340 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1341 }
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1342 aim_sendcookie(sess, tstconn, redir->cookie);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1343 break;
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1344
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1345 case 0xe: { /* Chat */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1346 struct chat_connection *ccon;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1347
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1348 tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHAT, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1349 if (tstconn == NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1350 debug_printf("unable to connect to chat server\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1351 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1352 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1353 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1354
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1355 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
1356
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1357 ccon = g_new0(struct chat_connection, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1358 ccon->conn = tstconn;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1359 ccon->gc = gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1360 ccon->fd = -1;
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1361 ccon->name = g_strdup(redir->chat.room);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1362 ccon->exchange = redir->chat.exchange;
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1363 ccon->instance = redir->chat.instance;
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1364 ccon->show = extract_name(redir->chat.room);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1365
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1366 ccon->conn->status |= AIM_CONN_STATUS_INPROGRESS;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1367 ccon->conn->fd = proxy_connect(host, port, oscar_chat_connect, ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1368 if (ccon->conn->fd < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1369 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1370 debug_printf("unable to connect to chat server\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1371 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1372 g_free(ccon->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1373 g_free(ccon->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1374 g_free(ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1375 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1376 }
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1377 aim_sendcookie(sess, tstconn, redir->cookie);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1378 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
1379 } break;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1380
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1381 case 0x0018: { /* email */
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1382 if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_EMAIL, NULL))) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1383 debug_printf("unable to connect to email server\n");
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1384 g_free(host);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1385 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1386 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1387 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
1388
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1389 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1390 tstconn->fd = proxy_connect(host, port, oscar_email_connect, gc);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1391 if (tstconn->fd < 0) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1392 aim_conn_kill(sess, &tstconn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1393 debug_printf("unable to connect to email server\n");
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1394 g_free(host);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1395 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1396 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1397 aim_sendcookie(sess, tstconn, redir->cookie);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1398 } break;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1399
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1400 default: /* huh? */
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1401 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
1402 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1403 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1404
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1405 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1406 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1407 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1408
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1409 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
1410 struct gaim_connection *gc = sess->aux_data;
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
1411 struct oscar_data *od = gc->proto_data;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1412 aim_userinfo_t *info;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1413 time_t time_idle = 0, signon = 0;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1414 int type = 0;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1415 int caps = 0;
2305
9ba346379088 [gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2303
diff changeset
1416 char *tmp;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1417 va_list ap;
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1418
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1419 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
1420 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1421 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1422
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1423 if (info->present & AIM_USERINFO_PRESENT_CAPABILITIES)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1424 caps = info->capabilities;
3267
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1425 if (info->flags & AIM_FLAG_ACTIVEBUDDY)
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1426 type |= UC_AB;
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1427
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1428 if ((!od->icq) && (info->present & AIM_USERINFO_PRESENT_FLAGS)) {
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1429 if (info->flags & AIM_FLAG_UNCONFIRMED)
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1430 type |= UC_UNCONFIRMED;
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1431 if (info->flags & AIM_FLAG_ADMINISTRATOR)
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1432 type |= UC_ADMIN;
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1433 if (info->flags & AIM_FLAG_AOL)
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1434 type |= UC_AOL;
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1435 if (info->flags & AIM_FLAG_FREE)
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1436 type |= UC_NORMAL;
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1437 if (info->flags & AIM_FLAG_AWAY)
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1438 type |= UC_UNAVAILABLE;
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1439 if (info->flags & AIM_FLAG_WIRELESS)
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1440 type |= UC_WIRELESS;
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
1441 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1442 if (info->present & AIM_USERINFO_PRESENT_ICQEXTSTATUS) {
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
1443 type = (info->icqinfo.status << 16);
3013
b937e542f50e [gaim-migrate @ 3026]
Sean Egan <seanegan@pidgin.im>
parents: 3009
diff changeset
1444 if (!(info->icqinfo.status & AIM_ICQ_STATE_CHAT) &&
b937e542f50e [gaim-migrate @ 3026]
Sean Egan <seanegan@pidgin.im>
parents: 3009
diff changeset
1445 (info->icqinfo.status != AIM_ICQ_STATE_NORMAL)) {
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1446 type |= UC_UNAVAILABLE;
3013
b937e542f50e [gaim-migrate @ 3026]
Sean Egan <seanegan@pidgin.im>
parents: 3009
diff changeset
1447 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1448 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1449
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1450 if (caps & AIM_CAPS_ICQ)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1451 caps ^= AIM_CAPS_ICQ;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1452
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1453 if (info->present & AIM_USERINFO_PRESENT_IDLE) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1454 time(&time_idle);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1455 time_idle -= info->idletime*60;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1456 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1457
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1458 if (info->present & AIM_USERINFO_PRESENT_SESSIONLEN)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1459 signon = time(NULL) - info->sessionlen;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1460
2305
9ba346379088 [gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2303
diff changeset
1461 tmp = g_strdup(normalize(gc->username));
9ba346379088 [gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2303
diff changeset
1462 if (!strcmp(tmp, normalize(info->sn)))
9ba346379088 [gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2303
diff changeset
1463 g_snprintf(gc->displayname, sizeof(gc->displayname), "%s", info->sn);
9ba346379088 [gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2303
diff changeset
1464 g_free(tmp);
9ba346379088 [gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2303
diff changeset
1465
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1466 serv_got_update(gc, info->sn, 1, info->warnlevel/10, signon,
2713
c22d13046898 [gaim-migrate @ 2726]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2706
diff changeset
1467 time_idle, type, caps);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1468
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1469 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1470 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1471
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1472 static int gaim_parse_offgoing(aim_session_t *sess, aim_frame_t *fr, ...) {
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
1473 aim_userinfo_t *info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1474 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1475 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1476
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1477 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
1478 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1479 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1480
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1481 serv_got_update(gc, info->sn, 0, 0, 0, 0, 0, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1482
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1483 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1484 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1485
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1486 static void cancel_direct_im(struct ask_direct *d) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1487 debug_printf("Freeing DirectIM prompts.\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1488
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1489 g_free(d->sn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1490 g_free(d);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1491 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1492
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1493 static void oscar_directim_callback(gpointer data, gint source, GaimInputCondition condition) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1494 struct direct_im *dim = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1495 struct gaim_connection *gc = dim->gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1496 struct oscar_data *od = gc->proto_data;
2235
8828cb249372 [gaim-migrate @ 2245]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2232
diff changeset
1497 struct conversation *cnv;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1498 char buf[256];
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1499 struct sockaddr name;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1500 socklen_t name_len = 1;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1501
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1502 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1503 g_free(dim);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1504 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1505 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1506
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1507 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1508 g_free(dim);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1509 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1510 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1511
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1512 if (dim->conn->fd != source)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1513 dim->conn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1514 aim_conn_completeconnect(od->sess, dim->conn);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1515 if (!(cnv = find_conversation(dim->name)))
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1516 cnv = new_conversation(dim->name);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1517
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1518 /* 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
1519 if (getpeername(source, &name, &name_len) == 0) {
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1520 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
1521 dim->connected = TRUE;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1522 write_to_conv(cnv, buf, WFLAG_SYSTEM, NULL, time(NULL), -1);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1523 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1524 od->direct_ims = g_slist_append(od->direct_ims, dim);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1525
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1526 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1527 oscar_callback, dim->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1528 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1529
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1530 /*
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1531 * This is called every time we are finished sending a file and the receiving buddy
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1532 * has sent back an acknowledgement; we start the next file or tear down the
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1533 * connection as appropriate.
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1534 */
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1535 static int oscar_sendfile_out_done(aim_session_t *sess, aim_frame_t *fr, ...) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1536 struct gaim_connection *gc = sess->aux_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1537 va_list ap;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1538 aim_conn_t *conn;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1539 const char *cook;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1540 struct oscar_file_transfer *oft;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1541
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1542 va_start(ap, fr);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1543 conn = va_arg(ap, aim_conn_t *);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1544 cook = va_arg(ap, const char *);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1545 va_end(ap);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1546
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1547 oft = find_oft_by_cookie(gc, cook);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1548 if (oft->filesdone == oft->totfiles)
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1549 oscar_file_transfer_disconnect(sess, conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1550 else
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1551 /* Send header for next file */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1552 oscar_sendfile_request(sess, oft);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1553
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1554 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1555 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1556
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1557 /* Called once for each file before sending the raw data. */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1558 static int oscar_sendfile_request(aim_session_t *sess,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1559 struct oscar_file_transfer *oft) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1560 char *name;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1561 int size;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1562
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1563 transfer_get_file_info(oft->xfer, &size, &name);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1564 /* AAA convert the name to UCS-2 if necessary, and pass the encoding to the call below */
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1565 aim_oft_sendfile_request(sess, oft->conn, name, oft->filesdone,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1566 oft->totfiles, size, oft->totsize);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1567
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1568 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1569 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1570
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1571 /*
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1572 * This is called when sending a file and a direct connection has been set up with
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1573 * the buddy; we can now transmit the appropriate headers describing the transfer.
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1574 */
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1575 static int oscar_sendfile_accepted(aim_session_t *sess, aim_frame_t *fr, ...) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1576 struct gaim_connection *gc = sess->aux_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1577 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1578 struct oscar_file_transfer *oft;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1579 va_list ap;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1580 aim_conn_t *conn, *listenerconn;
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1581
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1582 va_start(ap, fr);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1583 conn = va_arg(ap, aim_conn_t *);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1584 listenerconn = va_arg(ap, aim_conn_t *);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1585 va_end(ap);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1586
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1587 oft = find_oft_by_conn(gc, listenerconn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1588 oft->conn = conn;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1589 /* Stop watching listener conn; watch transfer conn instead */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1590 gaim_input_remove(oft->watcher);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1591 aim_conn_kill(sess, &listenerconn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1592
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1593 aim_conn_addhandler(od->sess, oft->conn, AIM_CB_FAM_OFT,
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
1594 AIM_CB_OFT_SENDFILEFILESEND,
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1595 oscar_file_transfer_do,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1596 0);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1597 aim_conn_addhandler(sess, conn,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1598 AIM_CB_FAM_OFT,
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
1599 AIM_CB_OFT_SENDFILECOMPLETE,
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1600 oscar_sendfile_out_done,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1601 0);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1602 oft->watcher = gaim_input_add(oft->conn->fd, GAIM_INPUT_READ,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1603 oscar_callback, oft->conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1604
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1605 oscar_sendfile_request(sess, oft);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1606
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1607 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1608 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1609
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1610 /*
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1611 * This is called when we requested to send a file to a buddy, but he or she didn't
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1612 * respond; we need to clean up.
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1613 */
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1614 static int oscar_sendfile_timeout(aim_session_t *sess, aim_frame_t *fr, ...) {
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1615 struct gaim_connection *gc = sess->aux_data;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1616 va_list ap;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1617 struct oscar_file_transfer *oft;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1618 char *cookie;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1619 aim_conn_t *bosconn;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1620
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1621 va_start(ap, fr);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1622 bosconn = va_arg(ap, aim_conn_t *);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1623 cookie = va_arg(ap, char *);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1624 va_end(ap);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1625
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1626 if ((oft = find_oft_by_cookie(gc, cookie))) {
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1627 aim_canceltransfer(sess, bosconn, oft->cookie,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1628 oft->sn, AIM_CAPS_SENDFILE);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1629
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1630 transfer_abort(oft->xfer, _("Transfer timed out"));
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1631 oscar_file_transfer_disconnect(sess, oft->conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1632 }
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1633
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1634 return 1; /* success */
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1635 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1636
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1637 /* Called once at the beginning of an outgoing transfer session. */
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
1638 static void oscar_file_transfer_out(struct gaim_connection *gc,
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1639 struct file_transfer *xfer, const char *name, int totfiles,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1640 int totsize) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1641 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1642 struct oscar_file_transfer *oft = find_oft_by_xfer(gc, xfer);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1643
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1644 oft->xfer = xfer;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1645 oft->totsize = totsize;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1646 oft->totfiles = totfiles;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1647 oft->filesdone = 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1648
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1649 oft->conn = aim_sendfile_initiate(od->sess, oft->sn,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1650 name, totfiles, oft->totsize, oft->cookie);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1651 if (!oft->conn) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1652 do_error_dialog(_("Couldn't open listener to send file"),
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1653 _("File transfer aborted"),
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1654 GAIM_ERROR);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1655 return;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1656 }
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1657
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1658 aim_conn_addhandler(od->sess, oft->conn, AIM_CB_FAM_OFT,
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
1659 AIM_CB_OFT_SENDFILEINITIATE,
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1660 oscar_sendfile_accepted,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1661 0);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1662 oft->watcher = gaim_input_add(oft->conn->fd, GAIM_INPUT_READ,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1663 oscar_callback, oft->conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1664 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1665
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1666 /*
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1667 * This is called after a chunk of data has been sent out or received; it is used
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1668 * to update the checksum.
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1669 */
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
1670 static void oscar_file_transfer_data_chunk(struct gaim_connection *gc,
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1671 struct file_transfer *xfer, const char *buf, int len)
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1672 {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1673 struct oscar_file_transfer *oft = find_oft_by_xfer(gc, xfer);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1674 aim_session_t *sess = aim_conn_getsess(oft->conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1675
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1676 if (oft->type == OFT_SENDFILE_IN)
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1677 aim_update_checksum(sess, oft->conn, buf, len);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1678 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1679
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1680 /* Called once at the beginning of an incoming transfer session. */
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
1681 static void oscar_file_transfer_in(struct gaim_connection *gc,
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1682 struct file_transfer *xfer, int offset) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1683 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1684 struct oscar_file_transfer *oft = find_oft_by_xfer(gc, xfer);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1685
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1686 oft->xfer = xfer;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1687 oft->conn = aim_accepttransfer(od->sess, od->conn, oft->sn,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1688 oft->cookie, oft->ip,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1689 oft->port,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1690 AIM_CAPS_SENDFILE);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1691 if (!oft->conn) {
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1692 /* XXX implement reverse connections for receiving from behind a firewall */
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1693 char *buf = g_strdup_printf("Couldn't connect to remote host");
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1694 do_error_dialog(buf, NULL, GAIM_ERROR);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1695 g_free(buf);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1696 return;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1697 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1698
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1699 aim_conn_addhandler(od->sess, oft->conn, AIM_CB_FAM_OFT,
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
1700 AIM_CB_OFT_SENDFILEFILEREQ, oscar_file_transfer_do,
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1701 0);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1702
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1703 oft->watcher = gaim_input_add(oft->conn->fd, GAIM_INPUT_READ,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1704 oscar_callback, oft->conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1705 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1706
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1707 /*
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1708 * This is called when the user began a file transfer, but subsequently canceled.
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1709 */
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
1710 static void oscar_file_transfer_cancel(struct gaim_connection *gc, struct file_transfer *xfer) {
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1711 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1712 struct oscar_file_transfer *oft = find_oft_by_xfer(gc, xfer);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1713
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1714 if (oft->type == OFT_SENDFILE_IN)
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1715 aim_denytransfer(od->sess, oft->sn, oft->cookie,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1716 AIM_TRANSFER_DENY_DECLINE);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1717
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1718 od->file_transfers = g_slist_remove(od->file_transfers, oft);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1719 aim_conn_kill(od->sess, &oft->conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1720 g_free(oft->sn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1721 g_free(oft);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1722 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1723
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1724 static int accept_direct_im(struct ask_direct *d) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1725 struct gaim_connection *gc = d->gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1726 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1727 struct direct_im *dim;
2945
839d36ea8de6 [gaim-migrate @ 2958]
Rob Flynn <gaim@robflynn.com>
parents: 2943
diff changeset
1728 char *host; int port = 4443;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1729 int i;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1730
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1731 debug_printf("Accepted DirectIM.\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1732
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1733 dim = find_direct_im(od, d->sn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1734 if (dim) {
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1735 cancel_direct_im(d); /* 40 */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1736 return TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1737 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1738 dim = g_new0(struct direct_im, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1739 dim->gc = d->gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1740 g_snprintf(dim->name, sizeof dim->name, "%s", d->sn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1741
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1742 dim->conn = aim_directim_connect(od->sess, d->sn, NULL, d->cookie);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1743 if (!dim->conn) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1744 g_free(dim);
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1745 cancel_direct_im(d);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1746 return TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1747 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1748
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1749 aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1750 gaim_directim_incoming, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1751 aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1752 gaim_directim_typing, 0);
3033
1f078ab46e76 [gaim-migrate @ 3046]
Sean Egan <seanegan@pidgin.im>
parents: 3031
diff changeset
1753 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
1754 gaim_update_ui, 0);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1755 for (i = 0; i < (int)strlen(d->ip); i++) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1756 if (d->ip[i] == ':') {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1757 port = atoi(&(d->ip[i+1]));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1758 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1759 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1760 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1761 host = g_strndup(d->ip, i);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1762 dim->conn->status |= AIM_CONN_STATUS_INPROGRESS;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1763 dim->conn->fd = proxy_connect(host, port, oscar_directim_callback, dim);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1764 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1765 if (dim->conn->fd < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1766 aim_conn_kill(od->sess, &dim->conn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1767 g_free(dim);
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1768 cancel_direct_im(d);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1769 return TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1770 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1771
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1772 cancel_direct_im(d);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1773
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1774 return TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1775 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1776
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
1777 static int incomingim_chan1(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch1_args *args) {
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
1778 char *tmp;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1779 struct gaim_connection *gc = sess->aux_data;
3600
776215788f43 [gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents: 3596
diff changeset
1780 struct oscar_data *od = gc->proto_data;
2273
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2249
diff changeset
1781 int flags = 0;
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
1782 int convlen;
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
1783 GError *err = NULL;
2273
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2249
diff changeset
1784
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2249
diff changeset
1785 if (args->icbmflags & AIM_IMFLAGS_AWAY)
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2249
diff changeset
1786 flags |= IM_FLAG_AWAY;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1787
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1788 if (args->icbmflags & AIM_IMFLAGS_HASICON) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1789 struct icon_req *ir = NULL;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1790 GSList *h = od->hasicons;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1791 char *who = normalize(userinfo->sn);
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1792
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1793 if (!args->iconlen || !args->iconsum || !args->iconstamp)
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1794 return 1;
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1795
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1796 debug_printf("%s has an icon\n", userinfo->sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1797 while (h) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1798 ir = h->data;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1799 if (!strcmp(ir->user, who))
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1800 break;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1801 h = h->next;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1802 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1803 if (!h) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1804 ir = g_new0(struct icon_req, 1);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1805 ir->user = g_strdup(who);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1806 od->hasicons = g_slist_append(od->hasicons, ir);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1807 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1808 if ((args->iconlen != ir->length) ||
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1809 (args->iconsum != ir->checksum) ||
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1810 (args->iconstamp != ir->timestamp))
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1811 ir->request = TRUE;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1812 ir->length = args->iconlen;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1813 ir->checksum = args->iconsum;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1814 ir->timestamp = args->iconstamp;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1815 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1816
2336
43d65c408209 [gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2315
diff changeset
1817 if (gc->user->iconfile[0] && (args->icbmflags & AIM_IMFLAGS_BUDDYREQ)) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1818 FILE *file;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1819 struct stat st;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1820
2248
091ec337929f [gaim-migrate @ 2258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
1821 if (!stat(gc->user->iconfile, &st)) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1822 char *buf = g_malloc(st.st_size);
2248
091ec337929f [gaim-migrate @ 2258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
1823 file = fopen(gc->user->iconfile, "r");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1824 if (file) {
2603
0c39616168c9 [gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2597
diff changeset
1825 int len = fread(buf, 1, st.st_size, file);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1826 debug_printf("Sending buddy icon to %s (%d bytes, %lu reported)\n",
2603
0c39616168c9 [gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2597
diff changeset
1827 userinfo->sn, len, st.st_size);
2673
84bb25b76700 [gaim-migrate @ 2686]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2672
diff changeset
1828 aim_send_icon(sess, userinfo->sn, buf, st.st_size,
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1829 st.st_mtime, aim_iconsum(buf, st.st_size));
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1830 fclose(file);
2336
43d65c408209 [gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2315
diff changeset
1831 } else
43d65c408209 [gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2315
diff changeset
1832 debug_printf("Can't open buddy icon file!\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1833 g_free(buf);
2336
43d65c408209 [gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2315
diff changeset
1834 } else
43d65c408209 [gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2315
diff changeset
1835 debug_printf("Can't stat buddy icon file!\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1836 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1837
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1838 if (args->icbmflags & AIM_IMFLAGS_UNICODE) {
3722
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1839 /* This message is marked as UNICODE, so we have to
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1840 * 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
1841 * This conversion should *never* fail, if it does it
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1842 * means that either the incoming ICBM is corrupted or
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1843 * there is something we don't understand about it. */
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1844 /* For the record, AIM Unicode is big-endian UCS-2 */
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1845
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1846 if (!args->msg || !args->msglen)
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1847 return 1;
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1848
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
1849 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
1850 if (err) {
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
1851 debug_printf("Unicode IM conversion: %s\n", err->message);
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
1852 tmp = strdup(_("(There was an error receiving this message)"));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1853 }
3722
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1854 } else {
3850
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
1855 /* 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
1856 * unflagged messages, which are ASCII. That's OK because
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1857 * ASCII is a strict subset of ISO-8859-1; this should
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1858 * help with compatibility with old, broken versions of
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1859 * gaim (everything before 0.60) and other broken clients
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1860 * that will happily send ISO-8859-1 without marking it as
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1861 * such */
3850
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
1862 if (args->icbmflags & AIM_IMFLAGS_ISO_8859_1) {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1863 debug_printf("Received ISO-8859-1 IM\n");
3850
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
1864 }
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1865
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1866 if (!args->msg || !args->msglen)
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1867 return 1;
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1868
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
1869 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
1870 if (err) {
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
1871 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
1872 tmp = strdup(_("(There was an error receiving this message)"));
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
1873 }
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
1874 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1875
3850
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
1876 if (args->icbmflags & AIM_IMFLAGS_CUSTOMCHARSET) {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1877 debug_printf("Custom character set: %hu %hu\n", args->charset, args->charsubset);
3850
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
1878 }
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
1879
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
1880 if (args->icbmflags & AIM_IMFLAGS_TYPINGNOT) {
3600
776215788f43 [gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents: 3596
diff changeset
1881 char *who = normalize(userinfo->sn);
776215788f43 [gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents: 3596
diff changeset
1882 if (!g_hash_table_lookup(od->supports_tn, who))
776215788f43 [gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents: 3596
diff changeset
1883 g_hash_table_insert(od->supports_tn, who, who);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
1884 }
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
1885
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
1886 //strip_linefeed(tmp);
2856
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2833
diff changeset
1887 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
1888 g_free(tmp);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1889
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1890 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1891 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1892
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
1893 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
1894 struct gaim_connection *gc = sess->aux_data;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1895
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1896 if (!args)
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1897 return 0;
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1898
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1899 debug_printf("rendezvous status %hu (%s)\n", args->status, userinfo->sn);
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1900
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1901 if (args->status == AIM_RENDEZVOUS_CANCEL) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1902 struct oscar_file_transfer *oft;
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1903 if (!args->cookie)
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1904 return 1;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1905 oft = find_oft_by_cookie(gc, args->cookie);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1906 if (oft) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1907 transfer_abort(oft->xfer, _("Buddy canceled transfer"));
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1908 oscar_file_transfer_disconnect(sess, oft->conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1909 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1910 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1911 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1912 else if (args->status == AIM_RENDEZVOUS_ACCEPT) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1913 /* The user accepted our transfer request, but we don't
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1914 * really need to do anything yet.
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1915 * -- wtm
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1916 */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1917 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1918 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1919 else if (args->status != AIM_RENDEZVOUS_PROPOSE) {
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1920 debug_printf("unknown rendezvous status\n");
2869
3165d3aff6c0 [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
1921 return 1;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1922 }
2869
3165d3aff6c0 [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
1923
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1924 if (args->reqclass & AIM_CAPS_CHAT) {
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1925 char *name;
4120
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
1926 int *exch;
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1927 GList *m = NULL;
4120
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
1928
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1929 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
1930 return 1;
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1931 name = extract_name(args->info.chat.roominfo.name);
4120
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
1932 exch = g_new0(int, 1);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1933 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
1934 *exch = args->info.chat.roominfo.exchange;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1935 m = g_list_append(m, exch);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1936 serv_got_chat_invite(gc,
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1937 name ? name : args->info.chat.roominfo.name,
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1938 userinfo->sn,
2869
3165d3aff6c0 [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
1939 (char *)args->msg,
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1940 m);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1941 if (name)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1942 g_free(name);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1943 } else if (args->reqclass & AIM_CAPS_SENDFILE) {
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1944 struct oscar_file_transfer *oft;
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1945 struct oscar_data *od = gc->proto_data;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1946
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1947 if (!args->cookie || !args->verifiedip || !args->port ||
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1948 !args->info.sendfile.filename || !args->info.sendfile.totsize ||
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1949 !args->info.sendfile.totfiles || !args->msg || !args->reqclass)
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
1950 return 1;
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1951 if ((oft = find_oft_by_cookie(sess->aux_data, args->cookie)))
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1952 {
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1953 /* This is a request for a reverse connection,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1954 * which is used by newer clients when for some
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1955 * reason they are unable to connect to our listener
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1956 * (e.g. they are behind a firewall).
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1957 */
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1958 if (oft->type != OFT_SENDFILE_OUT)
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1959 return -1;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1960
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1961 /* It seems that Trillian sends some weird
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1962 * packets. Sanity check.
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1963 */
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1964 if (!args->verifiedip)
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1965 return -1;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1966
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1967 /* This connection isn't used for anything, since
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1968 * we're using a reverse connection instead.
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1969 */
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1970 gaim_input_remove(oft->watcher);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1971 aim_conn_kill(sess, &oft->conn);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1972
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
1973 debug_printf("sendfile: doing reverse connection to %s:%hu\n", args->verifiedip, args->port);
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1974
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1975 oft->conn = aim_accepttransfer(sess, od->conn,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1976 userinfo->sn,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1977 args->cookie, args->verifiedip,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1978 args->port,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1979 AIM_CAPS_SENDFILE);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1980
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1981 /* XXX: this is a bit of a hack: ideally
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1982 * we should wait on GAIM_INPUT_WRITE. -- wtm
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1983 */
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1984 aim_conn_completeconnect(sess, oft->conn);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1985
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1986 oscar_sendfile_request(sess, oft);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1987
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1988 aim_conn_addhandler(sess, oft->conn,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1989 AIM_CB_FAM_OFT,
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
1990 AIM_CB_OFT_SENDFILECOMPLETE,
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1991 oscar_sendfile_out_done,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1992 0);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1993 aim_conn_addhandler(sess, oft->conn,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1994 AIM_CB_FAM_OFT,
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
1995 AIM_CB_OFT_SENDFILEFILESEND,
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1996 oscar_file_transfer_do,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1997 0);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1998 oft->watcher = gaim_input_add(oft->conn->fd,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1999 GAIM_INPUT_READ, oscar_callback,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2000 oft->conn);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2001 return 0;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2002 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2003
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
2004 /* Someone wants to send a file (or files) to us */
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2005 debug_printf("%s (%s) requests to send a file to %s\n",
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2006 userinfo->sn, args->verifiedip, gc->username);
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2007
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2008 oft = g_new0(struct oscar_file_transfer, 1);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2009
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2010 oft->type = OFT_SENDFILE_IN;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2011 oft->sn = g_strdup(userinfo->sn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2012 strncpy(oft->ip, args->verifiedip, sizeof(oft->ip));
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2013 oft->port = args->port;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2014 memcpy(oft->cookie, args->cookie, 8);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2015
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2016 od->file_transfers = g_slist_append(od->file_transfers, oft);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2017
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2018 oft->xfer = transfer_in_add(gc, userinfo->sn,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2019 args->info.sendfile.filename,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2020 args->info.sendfile.totsize,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2021 args->info.sendfile.totfiles,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2022 args->msg);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2023 } else if (args->reqclass & AIM_CAPS_GETFILE) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2024 } else if (args->reqclass & AIM_CAPS_VOICE) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2025 } else if (args->reqclass & AIM_CAPS_BUDDYICON) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2026 set_icon_data(gc, normalize(userinfo->sn), args->info.icon.icon,
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2027 args->info.icon.length);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2028 } else if (args->reqclass & AIM_CAPS_IMIMAGE) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2029 struct ask_direct *d = g_new0(struct ask_direct, 1);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2030 char buf[256];
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2031
4212
1a596d7f28ae [gaim-migrate @ 4449]
Brandon Scott
parents: 4207
diff changeset
2032 if (!args->verifiedip) {
1a596d7f28ae [gaim-migrate @ 4449]
Brandon Scott
parents: 4207
diff changeset
2033 debug_printf("directim kill blocked (%s)\n", userinfo->sn);
1a596d7f28ae [gaim-migrate @ 4449]
Brandon Scott
parents: 4207
diff changeset
2034 return 1;
1a596d7f28ae [gaim-migrate @ 4449]
Brandon Scott
parents: 4207
diff changeset
2035 }
1a596d7f28ae [gaim-migrate @ 4449]
Brandon Scott
parents: 4207
diff changeset
2036
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2037 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
2038 gc->username, userinfo->sn, args->verifiedip);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2039
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2040 d->gc = gc;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2041 d->sn = g_strdup(userinfo->sn);
2869
3165d3aff6c0 [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
2042 strncpy(d->ip, args->verifiedip, sizeof(d->ip));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2043 memcpy(d->cookie, args->cookie, 8);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2044 g_snprintf(buf, sizeof buf, "%s has just asked to directly connect to %s.",
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2045 userinfo->sn, gc->username);
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
2046 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);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2047 } else {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2048 debug_printf("Unknown reqclass %hu\n", args->reqclass);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2049 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2050
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2051 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2052 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2053
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2054 /*
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2055 * Authorization Functions
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2056 * 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
2057 * methods of authorization (SSI and old-school channel 4 ICBM)
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2058 */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2059 static void gaim_auth_request(struct name_data *data) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2060 struct gaim_connection *gc = data->gc;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2061 struct oscar_data *od = gc->proto_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2062 struct buddy *buddy = find_buddy(gc, data->name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2063 struct group *group = find_group_by_buddy(gc, data->name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2064 if (buddy && group) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2065 debug_printf("ssi: adding buddy %s to group %s\n", buddy->name, group->name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2066 aim_ssi_sendauthrequest(od->sess, od->conn, data->name, "Please authorize me so I can add you to my buddy list.");
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2067 aim_ssi_addbuddy(od->sess, od->conn, buddy->name, group->name, get_buddy_alias_only(buddy), NULL, NULL, 1);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2068 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2069 gaim_free_name_data(data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2070 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2071
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2072 static void gaim_auth_dontrequest(struct name_data *data) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2073 /* struct gaim_connection *gc = data->gc; */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2074 /* struct oscar_data *od = gc->proto_data; */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2075 /* XXX - Take the buddy out of our buddy list */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2076 gaim_free_name_data(data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2077 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2078
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2079 /* When other people ask you for authorization */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2080 static void gaim_auth_grant(struct name_data *data) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2081 struct gaim_connection *gc = data->gc;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2082 struct oscar_data *od = gc->proto_data;
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2083 gchar message;
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2084 message = 0;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2085 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2086 aim_send_im_ch4(od->sess, data->name, AIM_ICQMSG_AUTHGRANTED, &message);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2087 show_got_added(gc, NULL, data->name, NULL, NULL);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2088 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2089 aim_ssi_sendauthreply(od->sess, od->conn, data->name, 0x01, &message);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2090 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2091 gaim_free_name_data(data);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2092 }
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2093
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2094 /* When other people ask you for authorization */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2095 static void gaim_auth_dontgrant(struct name_data *data) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2096 struct gaim_connection *gc = data->gc;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2097 struct oscar_data *od = gc->proto_data;
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
2098 gchar *message;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2099 message = g_strdup_printf(_("No reason given."));
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2100 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2101 aim_send_im_ch4(od->sess, data->name, AIM_ICQMSG_AUTHDENIED, message);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2102 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2103 aim_ssi_sendauthreply(od->sess, od->conn, data->name, 0x00, message);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2104 #endif
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
2105 g_free(message);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2106 gaim_free_name_data(data);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2107 }
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2108
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2109 /* When someone sends you contacts */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2110 static void gaim_icq_contactadd(struct name_data *data) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2111 struct gaim_connection *gc = data->gc;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2112 show_add_buddy(gc, data->name, NULL, data->nick);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2113 gaim_free_name_data(data);
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2114 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2115
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2116 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
2117 struct gaim_connection *gc = sess->aux_data;
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2118 gchar **msg1, **msg2;
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2119 GError *err = NULL;
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2120 int i;
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2121
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2122 if (!args->type || !args->msg || !args->uin)
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
2123 return 1;
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2124
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2125 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
2126
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2127 /* 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
2128 msg1 = g_strsplit(args->msg, "\376", 0);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2129 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
2130 for (i=0; msg1[i]; i++) {
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2131 strip_linefeed(msg1[i]);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2132 msg2[i] = g_convert(msg1[i], strlen(msg1[i]), "UTF-8", "ISO-8859-1", NULL, NULL, &err);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2133 if (err)
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2134 debug_printf("Error converting a string from ISO-8859-1 to UTF-8 in oscar ICBM channel 4 parsing\n");
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2135 }
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2136 msg2[i] = NULL;
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2137
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
2138 switch (args->type) {
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2139 case 0x01: { /* MacICQ message or basic offline message */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2140 if (i >= 1) {
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2141 gchar *uin = g_strdup_printf("%lu", args->uin);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2142 if (t) { /* This is an offline message */
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2143 /* I think this timestamp is in UTC, or something */
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2144 serv_got_im(gc, uin, msg2[0], 0, t, -1);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2145 } else { /* This is a message from MacICQ/Miranda */
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2146 serv_got_im(gc, uin, msg2[0], 0, time(NULL), -1);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2147 }
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2148 g_free(uin);
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2149 }
3316
43bb95f6167a [gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents: 3279
diff changeset
2150 } break;
43bb95f6167a [gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents: 3279
diff changeset
2151
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2152 case 0x04: { /* Someone sent you a URL */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2153 if (i >= 2) {
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2154 gchar *uin = g_strdup_printf("%lu", args->uin);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2155 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
2156 serv_got_im(gc, uin, message, 0, time(NULL), -1);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2157 g_free(uin);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2158 g_free(message);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2159 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2160 } break;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2161
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2162 case 0x06: { /* Someone requested authorization */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2163 if (i >= 6) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2164 struct name_data *data = g_new(struct name_data, 1);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2165 gchar *dialog_msg = g_strdup_printf(_("The user %lu wants to add you to their buddy list for the following reason: %s"), args->uin, msg2[5] ? msg2[5] : _("No reason given."));
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2166 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
2167 data->gc = gc;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2168 data->name = g_strdup_printf("%lu", args->uin);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2169 data->nick = NULL;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2170 do_ask_dialog(_("Authorization Request"), dialog_msg, data, _("Authorize"), gaim_auth_grant, _("Deny"), gaim_auth_dontgrant);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2171 g_free(dialog_msg);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2172 }
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2173 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2174
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2175 case 0x07: { /* Someone has denied you authorization */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2176 if (i >= 1) {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2177 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
2178 do_error_dialog(_("ICQ authorization denied."), dialog_msg, GAIM_INFO);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2179 g_free(dialog_msg);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2180 }
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2181 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2182
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2183 case 0x08: { /* Someone has granted you authorization */
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2184 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
2185 do_error_dialog("ICQ authorization accepted.", dialog_msg, GAIM_INFO);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2186 g_free(dialog_msg);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2187 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2188
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2189 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
2190 if (i >= 6) {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2191 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
2192 do_error_dialog("ICQ Page", dialog_msg, GAIM_INFO);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2193 g_free(dialog_msg);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2194 }
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2195 } break;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2196
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2197 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
2198 if (i >= 6) {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2199 gchar *dialog_msg = g_strdup_printf(_("You have received an ICQ email\n\n1=%s\n2=%s\n3=%s\n4=%s\n5=%s\n6=%s\n"), msg2[0], msg2[1], msg2[2], msg2[3], msg2[4], msg2[5]);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2200 do_error_dialog("ICQ Email", dialog_msg, GAIM_INFO);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2201 g_free(dialog_msg);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2202 }
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2203 } break;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2204
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2205 case 0x12: {
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2206 /* 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
2207 /* Someone added you to their contact list? */
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2208 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2209
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2210 case 0x13: { /* Someone has sent you some ICQ contacts */
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2211 int i, num;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2212 gchar **text;
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2213 text = g_strsplit(args->msg, "\376", 0);
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2214 if (text) {
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2215 num = 0;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2216 for (i=0; i<strlen(text[0]); i++)
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2217 num = num*10 + text[0][i]-48;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2218 for (i=0; i<num; i++) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2219 struct name_data *data = g_new(struct name_data, 1);
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
2220 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
2221 data->gc = gc;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2222 data->name = g_strdup(text[i*2+2]);
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2223 data->nick = g_strdup(text[i*2+1]);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2224 do_ask_dialog(message, _("Do you want to add this contact to your Buddy List?"), data, _("Add"), gaim_icq_contactadd, _("Deny"), gaim_free_name_data);
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2225 g_free(message);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2226 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2227 g_strfreev(text);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2228 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2229 } break;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2230
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
2231 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
2232 /* This is boring and silly. */
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2233 } break;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2234
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2235 default: {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2236 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
2237 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2238 }
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2239
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2240 g_strfreev(msg1);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2241 g_strfreev(msg2);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
2242
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2243 return 1;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2244 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2245
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2246 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
2247 fu16_t channel;
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2248 int ret = 0;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2249 aim_userinfo_t *userinfo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2250 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2251
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2252 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2253 channel = (fu16_t)va_arg(ap, unsigned int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2254 userinfo = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2255
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2256 switch (channel) {
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2257 case 1: { /* standard message */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2258 struct aim_incomingim_ch1_args *args;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2259 args = va_arg(ap, struct aim_incomingim_ch1_args *);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2260 ret = incomingim_chan1(sess, fr->conn, userinfo, args);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2261 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2262
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2263 case 2: { /* rendevous */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2264 struct aim_incomingim_ch2_args *args;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2265 args = va_arg(ap, struct aim_incomingim_ch2_args *);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2266 ret = incomingim_chan2(sess, fr->conn, userinfo, args);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2267 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2268
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2269 case 4: { /* ICQ */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2270 struct aim_incomingim_ch4_args *args;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2271 args = va_arg(ap, struct aim_incomingim_ch4_args *);
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
2272 ret = incomingim_chan4(sess, fr->conn, userinfo, args, 0);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2273 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2274
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2275 default: {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2276 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
2277 } break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2278 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2279
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2280 va_end(ap);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2281
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2282 return ret;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2283 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2284
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2285 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
2286 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2287 fu16_t chan, nummissed, reason;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2288 aim_userinfo_t *userinfo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2289 char buf[1024];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2290
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2291 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2292 chan = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2293 userinfo = va_arg(ap, aim_userinfo_t *);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2294 nummissed = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2295 reason = (fu16_t)va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2296 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2297
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2298 switch(reason) {
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2299 case 0:
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2300 /* Invalid (0) */
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2301 g_snprintf(buf,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2302 sizeof(buf),
2946
f55f9952021d [gaim-migrate @ 2959]
Rob Flynn <gaim@robflynn.com>
parents: 2945
diff changeset
2303 nummissed == 1 ?
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2304 _("You missed %hu message from %s because it was invalid.") :
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2305 _("You missed %hu messages from %s because they were invalid."),
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2306 nummissed,
2947
017dad5d4132 [gaim-migrate @ 2960]
Rob Flynn <gaim@robflynn.com>
parents: 2946
diff changeset
2307 userinfo->sn);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2308 break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2309 case 1:
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2310 /* Message too large */
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2311 g_snprintf(buf,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2312 sizeof(buf),
2943
c4db4a45426f [gaim-migrate @ 2956]
Rob Flynn <gaim@robflynn.com>
parents: 2931
diff changeset
2313 nummissed == 1 ?
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2314 _("You missed %hu message from %s because it was too large.") :
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2315 _("You missed %hu messages from %s because they were too large."),
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2316 nummissed,
2943
c4db4a45426f [gaim-migrate @ 2956]
Rob Flynn <gaim@robflynn.com>
parents: 2931
diff changeset
2317 userinfo->sn);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2318 break;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2319 case 2:
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2320 /* Rate exceeded */
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2321 g_snprintf(buf,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2322 sizeof(buf),
2943
c4db4a45426f [gaim-migrate @ 2956]
Rob Flynn <gaim@robflynn.com>
parents: 2931
diff changeset
2323 nummissed == 1 ?
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2324 _("You missed %hu message from %s because the rate limit has been exceeded.") :
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2325 _("You missed %hu messages from %s because the rate limit has been exceeded."),
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2326 nummissed,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2327 userinfo->sn);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2328 break;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2329 case 3:
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2330 /* Evil Sender */
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2331 g_snprintf(buf,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2332 sizeof(buf),
2943
c4db4a45426f [gaim-migrate @ 2956]
Rob Flynn <gaim@robflynn.com>
parents: 2931
diff changeset
2333 nummissed == 1 ?
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2334 _("You missed %hu message from %s because he/she was too evil.") :
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2335 _("You missed %hu messages from %s because he/she was too evil."),
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2336 nummissed,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2337 userinfo->sn);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2338 break;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2339 case 4:
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2340 /* Evil Receiver */
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2341 g_snprintf(buf,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2342 sizeof(buf),
2943
c4db4a45426f [gaim-migrate @ 2956]
Rob Flynn <gaim@robflynn.com>
parents: 2931
diff changeset
2343 nummissed == 1 ?
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2344 _("You missed %hu message from %s because you are too evil.") :
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2345 _("You missed %hu messages from %s because you are too evil."),
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2346 nummissed,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2347 userinfo->sn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2348 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2349 default:
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2350 g_snprintf(buf,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2351 sizeof(buf),
2943
c4db4a45426f [gaim-migrate @ 2956]
Rob Flynn <gaim@robflynn.com>
parents: 2931
diff changeset
2352 nummissed == 1 ?
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2353 _("You missed %hu message from %s for an unknown reason.") :
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2354 _("You missed %hu messages from %s for an unknown reason."),
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2355 nummissed,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2356 userinfo->sn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2357 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2358 }
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
2359 do_error_dialog(buf, NULL, GAIM_ERROR);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2360
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2361 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2362 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2363
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2364 static char *gaim_icq_status(int state) {
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2365 /* 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
2366 if (state & AIM_ICQ_STATE_CHAT)
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2367 return g_strdup_printf("Free For Chat");
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2368 else if (state & AIM_ICQ_STATE_DND)
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2369 return g_strdup_printf("Do Not Disturb");
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2370 else if (state & AIM_ICQ_STATE_OUT)
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2371 return g_strdup_printf("Not Available");
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2372 else if (state & AIM_ICQ_STATE_BUSY)
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2373 return g_strdup_printf("Occupied");
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2374 else if (state & AIM_ICQ_STATE_AWAY)
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2375 return g_strdup_printf("Away");
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2376 else if (state & AIM_ICQ_STATE_WEBAWARE)
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2377 return g_strdup_printf("Web Aware");
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2378 else if (state & AIM_ICQ_STATE_INVISIBLE)
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2379 return g_strdup_printf("Invisible");
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2380 else
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2381 return g_strdup_printf("Online");
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2382 }
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2383
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2384 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
2385 struct gaim_connection *gc = sess->aux_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2386
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2387 switch (reason) {
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2388 case 3: { /* Decline sendfile. */
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2389 struct oscar_file_transfer *oft = find_oft_by_cookie(gc, cookie);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2390
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2391 if (oft) {
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2392 char *buf = g_strdup_printf(_("%s has declined to receive a file from %s.\n"),
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2393 who, gc->username);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2394 transfer_abort(oft->xfer, buf);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2395 g_free(buf);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2396 oscar_file_transfer_disconnect(sess, oft->conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2397 }
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2398 } break;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2399
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2400 default: {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2401 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
2402 }
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2403
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2404 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2405
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2406 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2407 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2408
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2409 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
2410 struct gaim_connection *gc = sess->aux_data;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2411
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2412 switch(reason) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2413 case 0x0003: { /* Reply from an ICQ status message request */
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2414 char *status_msg = gaim_icq_status(state);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2415 char *dialog_msg, **splitmsg;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2416 struct oscar_data *od = gc->proto_data;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2417 GSList *l = od->evilhack;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2418 gboolean evilhack = FALSE;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2419
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2420 /* 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
2421 splitmsg = g_strsplit(msg, "\r\n", 0);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2422
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2423 /* 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
2424 * 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
2425 while (l) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2426 char *x = l->data;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2427 if (!strcmp(x, normalize(who))) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2428 evilhack = TRUE;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2429 g_free(x);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2430 od->evilhack = g_slist_remove(od->evilhack, x);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2431 break;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2432 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2433 l = l->next;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2434 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2435
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2436 if (evilhack)
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2437 dialog_msg = g_strdup_printf(_("<B>UIN:</B> %s<BR><B>Status:</B> %s<BR><HR>%s<BR>"), who, status_msg, g_strjoinv("<BR>", splitmsg));
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2438 else
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2439 dialog_msg = g_strdup_printf(_("<B>Status:</B> %s<BR><HR>%s<BR>"), status_msg, g_strjoinv("<BR>", splitmsg));
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2440 g_show_info_text(gc, who, 2, dialog_msg, NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2441
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2442 g_free(status_msg);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2443 g_free(dialog_msg);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2444 g_strfreev(splitmsg);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2445 } break;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2446
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2447 default: {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2448 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
2449 } break;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2450 } /* end of switch */
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2451
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2452 return 0;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2453 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2454
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2455 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
2456 va_list ap;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2457 fu16_t chan, reason;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2458 char *who;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2459
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2460 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2461 chan = (fu16_t)va_arg(ap, unsigned int);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2462 who = va_arg(ap, char *);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2463 reason = (fu16_t)va_arg(ap, unsigned int);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2464
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
2465 if (chan == 0x0002) { /* File transfer declined */
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2466 char *cookie = va_arg(ap, char *);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2467 return gaim_parse_clientauto_ch2(sess, who, reason, cookie);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
2468 } else if (chan == 0x0004) { /* ICQ message */
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2469 fu32_t state = 0;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2470 char *msg = NULL;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2471 if (reason == 0x0003) {
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2472 state = va_arg(ap, fu32_t);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2473 msg = va_arg(ap, char *);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2474 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2475 return gaim_parse_clientauto_ch4(sess, who, reason, state, msg);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2476 }
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
2477
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2478 va_end(ap);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2479
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2480 return 1;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2481 }
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2482
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2483 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
2484 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2485 fu16_t reason;
2865
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
2486 char *m;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2487
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2488 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
2489 reason = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2490 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2491
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2492 debug_printf("snac threw error (reason 0x%04hx: %s)\n", reason,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2493 (reason < msgerrreasonlen) ? msgerrreason[reason] : "unknown");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2494
2865
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
2495 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
2496 reason < msgerrreasonlen ? gettext(msgerrreason[reason]) : _("Unknown error"));
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
2497 do_error_dialog(m, NULL, GAIM_ERROR);
2865
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
2498 g_free(m);
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
2499
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2500 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2501 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2502
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2503 static int gaim_parse_msgerr(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2504 va_list ap;
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2505 char *data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2506 fu16_t reason;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2507 char buf[1024];
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2508 struct gaim_connection *gc = sess->aux_data;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2509 struct oscar_file_transfer *oft;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2510
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2511 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
2512 reason = (fu16_t) va_arg(ap, unsigned int);
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2513 data = va_arg(ap, char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2514 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2515
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2516 /* If this was a file transfer request, data is a cookie. */
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2517 if ((oft = find_oft_by_cookie(gc, data))) {
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2518 transfer_abort(oft->xfer,
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
2519 (reason < msgerrreasonlen) ? gettext(msgerrreason[reason]) : _("No reason was given."));
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2520
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2521 oscar_file_transfer_disconnect(sess, oft->conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2522 return 1;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2523 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2524
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2525 /* Data is assumed to be the destination sn. */
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2526 snprintf(buf, sizeof(buf), _("Your message to %s did not get sent:"), data);
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
2527 do_error_dialog(buf, (reason < msgerrreasonlen) ? gettext(msgerrreason[reason]) : _("No reason was given."), GAIM_ERROR);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2528
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2529 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2530 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2531
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2532 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
2533 struct gaim_connection *gc = sess->aux_data;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2534 va_list ap;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2535 fu16_t type1, type2;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2536 char *sn;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2537
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2538 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
2539 type1 = (fu16_t) va_arg(ap, unsigned int);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2540 sn = va_arg(ap, char *);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
2541 type2 = (fu16_t) va_arg(ap, unsigned int);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2542 va_end(ap);
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2543
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2544 debug_printf("Received an mtn from %s. Type1 is 0x%04hx and type2 is 0x%04hx.\n", sn, type1, type2);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2545
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2546 switch (type2) {
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2547 case 0x0000: { /* Text has been cleared */
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2548 serv_got_typing_stopped(gc, sn);
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2549 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2550
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2551 case 0x0001: { /* Paused typing */
3768
bb6cc9d30511 [gaim-migrate @ 3907]
Nathan Walp <nwalp@pidgin.im>
parents: 3752
diff changeset
2552 serv_got_typing(gc, sn, 0, TYPED);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2553 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2554
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2555 case 0x0002: { /* Typing */
3768
bb6cc9d30511 [gaim-migrate @ 3907]
Nathan Walp <nwalp@pidgin.im>
parents: 3752
diff changeset
2556 serv_got_typing(gc, sn, 0, TYPING);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2557 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2558
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2559 default: {
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2560 printf("Received unknown typing notification type.\n");
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2561 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2562 }
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2563
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2564 return 1;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2565 }
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2566
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2567 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
2568 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2569 char *destn;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2570 fu16_t reason;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2571 char buf[1024];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2572
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2573 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
2574 reason = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2575 destn = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2576 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2577
3574
b4839ec94817 [gaim-migrate @ 3673]
Luke Schierer <lschiere@pidgin.im>
parents: 3572
diff changeset
2578 snprintf(buf, sizeof(buf), _("User information for %s unavailable:"), destn);
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
2579 do_error_dialog(buf, (reason < msgerrreasonlen) ? gettext(msgerrreason[reason]) : _("No reason was given."), GAIM_ERROR);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2580
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2581 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2582 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2583
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2584 static char *images(int flags) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2585 static char buf[1024];
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
2586 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
2587 (flags & AIM_FLAG_ACTIVEBUDDY) ? "<IMG SRC=\"ab_icon.gif\">" : "",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2588 (flags & AIM_FLAG_UNCONFIRMED) ? "<IMG SRC=\"dt_icon.gif\">" : "",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2589 (flags & AIM_FLAG_AOL) ? "<IMG SRC=\"aol_icon.gif\">" : "",
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
2590 (flags & AIM_FLAG_ICQ) ? "<IMG SRC=\"icq_icon.gif\">" : "",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2591 (flags & AIM_FLAG_ADMINISTRATOR) ? "<IMG SRC=\"admin_icon.gif\">" : "",
3079
e55c9a9cc4fc [gaim-migrate @ 3093]
Mark Doliner <markdoliner@pidgin.im>
parents: 3074
diff changeset
2592 (flags & AIM_FLAG_FREE) ? "<IMG SRC=\"free_icon.gif\">" : "",
e55c9a9cc4fc [gaim-migrate @ 3093]
Mark Doliner <markdoliner@pidgin.im>
parents: 3074
diff changeset
2593 (flags & AIM_FLAG_WIRELESS) ? "<IMG SRC=\"wireless_icon.gif\">" : "");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2594 return buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2595 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2596
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
2597
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2598 /* XXX This is horribly copied from ../../buddy.c. */
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2599 static char *caps_string(guint caps)
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2600 {
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2601 static char buf[512], *tmp;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2602 int count = 0, i = 0;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2603 guint bit = 1;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2604 while (bit <= 0x10000) {
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2605 if (bit & caps) {
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2606 switch (bit) {
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2607 case 0x1:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2608 tmp = _("Buddy Icon");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2609 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2610 case 0x2:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2611 tmp = _("Voice");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2612 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2613 case 0x4:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2614 tmp = _("IM Image");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2615 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2616 case 0x8:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2617 tmp = _("Chat");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2618 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2619 case 0x10:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2620 tmp = _("Get File");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2621 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2622 case 0x20:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2623 tmp = _("Send File");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2624 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2625 case 0x40:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2626 case 0x200:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2627 tmp = _("Games");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2628 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2629 case 0x80:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2630 tmp = _("Stocks");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2631 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2632 case 0x100:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2633 tmp = _("Send Buddy List");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2634 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2635 case 0x400:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2636 tmp = _("EveryBuddy Bug");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2637 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2638 case 0x800:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2639 tmp = _("AP User");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2640 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2641 case 0x1000:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2642 tmp = _("ICQ RTF");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2643 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2644 case 0x2000:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2645 tmp = _("Nihilist");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2646 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2647 case 0x4000:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2648 tmp = _("ICQ Server Relay");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2649 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2650 case 0x8000:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2651 tmp = _("ICQ Unknown");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2652 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2653 case 0x10000:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2654 tmp = _("Trillian Encryption");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2655 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2656 default:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2657 tmp = NULL;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2658 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2659 }
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2660 if (tmp)
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2661 i += g_snprintf(buf + i, sizeof(buf) - i, "%s%s", (count ? ", " : ""),
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2662 tmp);
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2663 count++;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2664 }
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2665 bit <<= 1;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2666 }
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2667 return buf;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2668 }
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2669
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2670 static int gaim_parse_user_info(aim_session_t *sess, aim_frame_t *fr, ...) {
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2671 aim_userinfo_t *info;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2672 char *text_enc = NULL, *text = NULL, *utf8 = NULL;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2673 int text_len;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2674 fu16_t infotype;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2675 fu32_t flags;
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2676 char header[BUF_LONG];
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2677 struct gaim_connection *gc = sess->aux_data;
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2678 struct oscar_data *od = gc->proto_data;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2679 GSList *l = od->evilhack;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2680 gboolean evilhack = FALSE;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2681 va_list ap;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2682 gchar *membersince = NULL, *onlinesince = NULL, *idle = NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2683
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2684 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2685 info = va_arg(ap, aim_userinfo_t *);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
2686 infotype = (fu16_t) va_arg(ap, unsigned int);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2687 text_enc = va_arg(ap, char *);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2688 text = va_arg(ap, char *);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2689 text_len = va_arg(ap, int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2690 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2691
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2692 if (text_len > 0) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2693 flags = parse_encoding (text_enc);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2694 switch (flags) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2695 case 0:
4159
3b82b3117b24 [gaim-migrate @ 4387]
Mark Doliner <markdoliner@pidgin.im>
parents: 4154
diff changeset
2696 utf8 = g_strndup(text, text_len);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2697 break;
4166
75e205fa4ddb [gaim-migrate @ 4395]
Ethan Blanton <elb@pidgin.im>
parents: 4159
diff changeset
2698 case AIM_IMFLAGS_ISO_8859_1:
75e205fa4ddb [gaim-migrate @ 4395]
Ethan Blanton <elb@pidgin.im>
parents: 4159
diff changeset
2699 utf8 = g_convert(text, text_len, "UTF-8", "ISO-8859-1", NULL, NULL, NULL);
75e205fa4ddb [gaim-migrate @ 4395]
Ethan Blanton <elb@pidgin.im>
parents: 4159
diff changeset
2700 break;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2701 case AIM_IMFLAGS_UNICODE:
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2702 utf8 = g_convert(text, text_len, "UTF-8", "UCS-2BE", NULL, NULL, NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2703 break;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2704 default:
4152
48d3ee2d27ad [gaim-migrate @ 4378]
Mark Doliner <markdoliner@pidgin.im>
parents: 4151
diff changeset
2705 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
2706 debug_printf("Encountered an unknown encoding while parsing userinfo\n");
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2707 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2708 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2709
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2710 if (info->present & AIM_USERINFO_PRESENT_ONLINESINCE) {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2711 onlinesince = g_strdup_printf("Online Since : <B>%s</B><BR>\n",
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2712 asctime(localtime(&info->onlinesince)));
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2713 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2714
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2715 if (info->present & AIM_USERINFO_PRESENT_MEMBERSINCE) {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2716 membersince = g_strdup_printf("Member Since : <B>%s</B><BR>\n",
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2717 asctime(localtime(&info->membersince)));
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2718 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2719
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2720 if (info->present & AIM_USERINFO_PRESENT_IDLE) {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2721 idle = g_strdup_printf("Idle : <B>%hu minutes</B>",
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2722 info->idletime);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2723 } else
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2724 idle = g_strdup("Idle: <B>Active</B>");
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2725
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2726 g_snprintf(header, sizeof header,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2727 _("Username : <B>%s</B> %s <BR>\n"
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2728 "Warning Level : <B>%d %%</B><BR>\n"
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2729 "%s"
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2730 "%s"
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2731 "%s<BR>\n"
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
2732 "<HR>\n"),
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2733 info->sn, images(info->flags),
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2734 info->warnlevel/10,
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2735 onlinesince ? onlinesince : "",
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2736 membersince ? membersince : "",
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2737 idle ? idle : "");
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2738
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2739 g_free(onlinesince);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2740 g_free(membersince);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2741 g_free(idle);
2773
3f711c709792 [gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2768
diff changeset
2742
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2743 while (l) {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2744 char *x = l->data;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2745 if (!strcmp(x, normalize(info->sn))) {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2746 evilhack = TRUE;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2747 g_free(x);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2748 od->evilhack = g_slist_remove(od->evilhack, x);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2749 break;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2750 }
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2751 l = l->next;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2752 }
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2753
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2754 if (infotype == AIM_GETINFO_AWAYMESSAGE) {
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2755 if (evilhack) {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2756 g_show_info_text(gc, info->sn, 2,
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2757 header,
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2758 (utf8 && *utf8) ? away_subs(utf8, gc->username) :
4207
24e4a2d77476 [gaim-migrate @ 4443]
Sean Egan <seanegan@pidgin.im>
parents: 4201
diff changeset
2759 _("<i>User has no away message</i>"), NULL);
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2760 } else {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2761 g_show_info_text(gc, info->sn, 0,
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2762 header,
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2763 (utf8 && *utf8) ? away_subs(utf8, gc->username) : NULL,
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2764 (utf8 && *utf8) ? "<BR><HR>" : NULL,
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2765 NULL);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2766 }
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2767 } else if (infotype == AIM_GETINFO_CAPABILITIES) {
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2768 g_show_info_text(gc, info->sn, 2,
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2769 header,
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2770 "<i>", _("Client Capabilities: "),
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2771 caps_string(info->capabilities),
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2772 "</i>",
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2773 NULL);
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2774 } else {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2775 g_show_info_text(gc, info->sn, 1,
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2776 (utf8 && *utf8) ? away_subs(utf8, gc->username) :
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2777 _("<i>No Information Provided</i>"),
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2778 NULL);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2779 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2780
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2781 g_free(utf8);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
2782
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2783 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2784 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2785
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2786 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
2787 char *msg;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2788 fu16_t id;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2789 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2790 char buildbuf[150];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2791
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2792 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
2793 id = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2794 msg = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2795 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2796
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2797 aim_getbuildstring(buildbuf, sizeof(buildbuf));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2798
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2799 debug_printf("MOTD: %s (%hu)\n", msg ? msg : "Unknown", id);
2092
f56061012e3c [gaim-migrate @ 2102]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
2800 if (id < 4)
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
2801 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
2802
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2803 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2804 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2805
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2806 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
2807 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2808 fu16_t type;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2809 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2810 struct oscar_data *odata = (struct oscar_data *)gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2811
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2812 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
2813 type = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2814
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2815 switch(type) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2816 case 0x0002: {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2817 fu8_t maxrooms;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2818 struct aim_chat_exchangeinfo *exchanges;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2819 int exchangecount, i;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2820
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
2821 maxrooms = (fu8_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2822 exchangecount = va_arg(ap, int);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2823 exchanges = va_arg(ap, struct aim_chat_exchangeinfo *);
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 debug_printf("chat info: Chat Rights:\n");
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2826 debug_printf("chat info: \tMax Concurrent Rooms: %hhd\n", maxrooms);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2827 debug_printf("chat info: \tExchange List: (%d total)\n", exchangecount);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2828 for (i = 0; i < exchangecount; i++)
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2829 debug_printf("chat info: \t\t%hu %s\n", exchanges[i].number, exchanges[i].name ? exchanges[i].name : "");
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
2830 while (odata->create_rooms) {
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
2831 struct create_room *cr = odata->create_rooms->data;
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
2832 debug_printf("creating room %s\n", cr->name);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
2833 aim_chatnav_createroom(sess, fr->conn, cr->name, cr->exchange);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
2834 g_free(cr->name);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
2835 odata->create_rooms = g_slist_remove(odata->create_rooms, cr);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
2836 g_free(cr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2837 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2838 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2839 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2840 case 0x0008: {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2841 char *fqcn, *name, *ck;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2842 fu16_t instance, flags, maxmsglen, maxoccupancy, unknown, exchange;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2843 fu8_t createperms;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2844 fu32_t createtime;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2845
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2846 fqcn = va_arg(ap, char *);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2847 instance = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2848 exchange = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2849 flags = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2850 createtime = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2851 maxmsglen = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2852 maxoccupancy = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2853 createperms = (fu8_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2854 unknown = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2855 name = va_arg(ap, char *);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2856 ck = va_arg(ap, char *);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2857
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2858 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
2859 fqcn,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2860 exchange, instance, flags,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2861 createtime,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2862 maxmsglen, maxoccupancy, createperms, unknown,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2863 name, ck);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2864 aim_chat_join(odata->sess, odata->conn, exchange, ck, instance);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2865 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2866 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2867 default:
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2868 debug_printf("chatnav info: unknown type (%04hx)\n", type);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2869 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2870 }
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2871
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2872 va_end(ap);
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2873
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2874 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2875 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2876
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2877 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
2878 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2879 int count, i;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2880 aim_userinfo_t *info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2881 struct gaim_connection *g = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2882
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2883 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2884
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2885 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2886 count = va_arg(ap, int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2887 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2888 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2889
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2890 c = find_oscar_chat_by_conn(g, fr->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2891 if (!c)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2892 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2893
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2894 for (i = 0; i < count; i++)
3708
20ba51ab2c7f [gaim-migrate @ 3841]
Jonas Birme <jonas.birme@fro.se>
parents: 3694
diff changeset
2895 add_chat_buddy(c->cnv, info[i].sn, NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2896
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2897 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2898 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2899
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2900 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
2901 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2902 int count, i;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2903 aim_userinfo_t *info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2904 struct gaim_connection *g = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2905
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2906 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2907
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2908 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2909 count = va_arg(ap, int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2910 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2911 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2912
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2913 c = find_oscar_chat_by_conn(g, fr->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2914 if (!c)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2915 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2916
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2917 for (i = 0; i < count; i++)
2820
4e07191ca3d0 [gaim-migrate @ 2833]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2817
diff changeset
2918 remove_chat_buddy(c->cnv, info[i].sn, NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2919
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2920 return 1;
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
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2923 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
2924 va_list ap;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2925 aim_userinfo_t *userinfo;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2926 struct aim_chat_roominfo *roominfo;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2927 char *roomname;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2928 int usercount;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2929 char *roomdesc;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2930 fu16_t unknown_c9, unknown_d2, unknown_d5, maxmsglen, maxvisiblemsglen;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2931 fu32_t creationtime;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2932 struct gaim_connection *gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2933 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
2934
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2935 va_start(ap, fr);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2936 roominfo = va_arg(ap, struct aim_chat_roominfo *);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2937 roomname = va_arg(ap, char *);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2938 usercount= va_arg(ap, int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2939 userinfo = va_arg(ap, aim_userinfo_t *);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2940 roomdesc = va_arg(ap, char *);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2941 unknown_c9 = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2942 creationtime = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2943 maxmsglen = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2944 unknown_d2 = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2945 unknown_d5 = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2946 maxvisiblemsglen = (fu16_t)va_arg(ap, unsigned int);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2947 va_end(ap);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2948
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2949 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
2950 maxmsglen, maxvisiblemsglen);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2951
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2952 ccon->maxlen = maxmsglen;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2953 ccon->maxvis = maxvisiblemsglen;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2954
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2955 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2956 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2957
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2958 static int gaim_chat_incoming_msg(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2959 va_list ap;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2960 aim_userinfo_t *info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2961 char *msg;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2962 struct gaim_connection *gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2963 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
2964 char *tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2965
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2966 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2967 info = va_arg(ap, aim_userinfo_t *);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2968 msg = va_arg(ap, char *);
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2969 va_end(ap);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2970
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2971 tmp = g_malloc(BUF_LONG);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2972 g_snprintf(tmp, BUF_LONG, "%s", msg);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2973 serv_got_chat_in(gc, ccon->id, info->sn, 0, tmp, time((time_t)NULL));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2974 g_free(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2975
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2976 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2977 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2978
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2979 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
2980 va_list ap;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2981 struct gaim_connection *gc = sess->aux_data;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2982 struct aim_emailinfo *emailinfo;
3725
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
2983 int havenewmail;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2984
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2985 va_start(ap, fr);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2986 emailinfo = va_arg(ap, struct aim_emailinfo *);
3725
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
2987 havenewmail = va_arg(ap, int);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2988 va_end(ap);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2989
3725
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
2990 if (emailinfo) {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2991 debug_printf("Got email info. webmail address for screenname@%s is %s, new email: %hhu, number new: %hu, flag is %hu, havenewmail is %d\n", emailinfo->domain, emailinfo->url, emailinfo->unread, emailinfo->nummsgs, emailinfo->flag, havenewmail);
3725
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
2992 if (emailinfo->unread) {
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
2993 if (havenewmail)
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
2994 connection_has_mail(gc, emailinfo->nummsgs ? emailinfo->nummsgs : -1, NULL, NULL, emailinfo->url);
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
2995 } else
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2996 connection_has_mail(gc, 0, NULL, NULL, emailinfo->url);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2997 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2998
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2999 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3000 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3001
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3002 /*
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3003 * 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
3004 */
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3005 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
3006 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3007 fu16_t type;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3008 char *sn;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3009
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3010 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3011 type = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3012 sn = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3013 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3014
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3015 debug_printf("Sent message to %s.\n", sn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3016
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3017 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3018 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3019
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3020 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
3021 static const char *codes[5] = {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3022 "invalid",
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3023 "change",
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3024 "warning",
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3025 "limit",
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3026 "limit cleared",
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3027 };
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3028 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3029 fu16_t code, rateclass;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3030 fu32_t windowsize, clear, alert, limit, disconnect, currentavg, maxavg;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3031
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3032 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3033 code = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3034 rateclass= (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3035 windowsize = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3036 clear = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3037 alert = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3038 limit = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3039 disconnect = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3040 currentavg = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3041 maxavg = va_arg(ap, fu32_t);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3042 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3043
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3044 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
3045 "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
3046 (code < 5) ? codes[code] : codes[0],
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3047 rateclass,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3048 currentavg, maxavg,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3049 alert, clear,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3050 limit, disconnect,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3051 windowsize);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3052
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3053 /* XXX fix these values */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3054 if (code == AIM_RATE_CODE_CHANGE) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3055 if (currentavg >= clear)
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3056 aim_conn_setlatency(fr->conn, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3057 } else if (code == AIM_RATE_CODE_WARNING) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3058 aim_conn_setlatency(fr->conn, windowsize/4);
2909
2935ea93dfe7 [gaim-migrate @ 2922]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2906
diff changeset
3059 } else if (code == AIM_RATE_CODE_LIMIT) {
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3060 do_error_dialog(_("Rate limiting error."),
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3061 _("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
3062 "Please wait 10 seconds and try again."), GAIM_ERROR);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3063 aim_conn_setlatency(fr->conn, windowsize/2);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3064 } else if (code == AIM_RATE_CODE_CLEARLIMIT) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3065 aim_conn_setlatency(fr->conn, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3066 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3067
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3068 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3069 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3070
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3071 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
3072 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3073 fu16_t newevil;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3074 aim_userinfo_t *userinfo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3075 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3076
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3077 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3078 newevil = (fu16_t) va_arg(ap, unsigned int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3079 userinfo = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3080 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3081
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3082 serv_got_eviled(gc, (userinfo && userinfo->sn[0]) ? userinfo->sn : NULL, newevil / 10);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3083
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3084 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3085 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3086
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3087 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
3088 va_list ap;
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3089 aim_userinfo_t *info;
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3090 struct gaim_connection *gc = sess->aux_data;
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3091
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3092 va_start(ap, fr);
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3093 info = va_arg(ap, aim_userinfo_t *);
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3094 va_end(ap);
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3095
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3096 gc->evil = info->warnlevel/10;
2698
29d3c1727fd1 [gaim-migrate @ 2711]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2689
diff changeset
3097 /* gc->correction_time = (info->onlinesince - gc->login_time); */
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3098
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3099 return 1;
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3100 }
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
3101
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
3102 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
3103
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3104 aim_reqpersonalinfo(sess, fr->conn);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3105
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3106 #ifndef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3107 debug_printf("ssi: requesting ssi list\n");
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3108 aim_ssi_reqrights(sess, fr->conn);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3109 aim_ssi_reqdata(sess, fr->conn, sess->ssi.timestamp, sess->ssi.numitems);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3110 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3111
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3112 aim_bos_reqlocaterights(sess, fr->conn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3113 aim_bos_reqbuddyrights(sess, fr->conn);
2673
84bb25b76700 [gaim-migrate @ 2686]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2672
diff changeset
3114 aim_reqicbmparams(sess);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3115 aim_bos_reqrights(sess, fr->conn);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3116
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3117 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3118 aim_bos_setgroupperm(sess, fr->conn, AIM_FLAG_ALLUSERS);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3119 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
3120 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3121
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3122 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3123 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3124
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
3125 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
3126 struct gaim_connection *gc = sess->aux_data;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3127 struct oscar_data *od = gc->proto_data;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3128
2672
5c9b7617a1f3 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
3129 aim_clientready(sess, fr->conn);
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
3130 debug_printf("connected to admin\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3131
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3132 if (od->chpass) {
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3133 debug_printf("changing password\n");
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3134 aim_admin_changepasswd(sess, fr->conn, od->newp, od->oldp);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3135 g_free(od->oldp);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3136 od->oldp = NULL;
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3137 g_free(od->newp);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3138 od->newp = NULL;
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3139 od->chpass = FALSE;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3140 }
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3141 if (od->setnick) {
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3142 debug_printf("formatting screenname\n");
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3143 aim_admin_setnick(sess, fr->conn, od->newsn);
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3144 g_free(od->newsn);
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3145 od->newsn = NULL;
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3146 od->setnick = FALSE;
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
3147 }
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3148 if (od->conf) {
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3149 debug_printf("confirming account\n");
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3150 aim_admin_reqconfirm(sess, fr->conn);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3151 od->conf = FALSE;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3152 }
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3153 if (od->reqemail) {
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3154 debug_printf("requesting email\n");
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3155 aim_admin_getinfo(sess, fr->conn, 0x0011);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3156 od->reqemail = FALSE;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3157 }
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3158 if (od->setemail) {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3159 debug_printf("setting email\n");
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3160 aim_admin_setemail(sess, fr->conn, od->email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3161 g_free(od->email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3162 od->setemail = FALSE;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3163 }
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
3164
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3165 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3166 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3167
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3168 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
3169 struct aim_icbmparameters *params;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3170 va_list ap;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3171
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3172 va_start(ap, fr);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3173 params = va_arg(ap, struct aim_icbmparameters *);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3174 va_end(ap);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3175
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3176 /* XXX - evidently this crashes on solaris. i have no clue why
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3177 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
3178 "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
3179 params->maxchan, params->flags, params->maxmsglen,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3180 ((float)params->maxsenderwarn)/10.0, ((float)params->maxrecverwarn)/10.0,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3181 params->minmsginterval);
2427
761801814c88 [gaim-migrate @ 2440]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2421
diff changeset
3182 */
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3183
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3184 /* Maybe senderwarn and recverwarn should be user preferences... */
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3185 params->flags = 0x0000000b;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3186 params->maxmsglen = 8000;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3187 params->minmsginterval = 0;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3188
2673
84bb25b76700 [gaim-migrate @ 2686]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2672
diff changeset
3189 aim_seticbmparam(sess, params);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3190
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3191 return 1;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3192 }
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3193
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3194 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
3195 {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3196 va_list ap;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3197 fu16_t maxsiglen;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3198 struct gaim_connection *gc = sess->aux_data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3199 struct oscar_data *odata = (struct oscar_data *)gc->proto_data;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3200 char *unicode;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3201 int unicode_len;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3202 fu32_t flags;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3203
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3204 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3205 maxsiglen = (fu16_t) va_arg(ap, int);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3206 va_end(ap);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3207
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3208 debug_printf("locate rights: max sig len = %d\n", maxsiglen);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3209
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3210 odata->rights.maxsiglen = odata->rights.maxawaymsglen = (guint)maxsiglen;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3211
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
3212 if (odata->icq)
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3213 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
3214 else {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3215 flags = check_encoding (gc->user->user_info);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3216
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3217 if (flags == 0) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3218 aim_bos_setprofile(sess, fr->conn, "us-ascii", gc->user->user_info,
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3219 strlen(gc->user->user_info), NULL, NULL, 0, caps_aim);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3220 } else {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3221 unicode = g_convert (gc->user->user_info, strlen(gc->user->user_info),
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3222 "UCS-2BE", "UTF-8", NULL, &unicode_len, NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3223 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
3224 NULL, NULL, 0, caps_aim);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3225 g_free(unicode);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3226 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3227 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3228
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3229 return 1;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3230 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3231
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3232 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
3233 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3234 fu16_t maxbuddies, maxwatchers;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3235 struct gaim_connection *gc = sess->aux_data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3236 struct oscar_data *odata = (struct oscar_data *)gc->proto_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3237
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3238 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3239 maxbuddies = (fu16_t) va_arg(ap, unsigned int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3240 maxwatchers = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3241 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3242
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3243 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
3244
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3245 odata->rights.maxbuddies = (guint)maxbuddies;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3246 odata->rights.maxwatchers = (guint)maxwatchers;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3247
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3248 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3249 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3250
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3251 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
3252 fu16_t maxpermits, maxdenies;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3253 va_list ap;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3254 struct gaim_connection *gc = sess->aux_data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3255 struct oscar_data *odata = (struct oscar_data *)gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3256
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3257 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3258 maxpermits = (fu16_t) va_arg(ap, unsigned int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3259 maxdenies = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3260 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3261
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3262 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
3263
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3264 odata->rights.maxpermits = (guint)maxpermits;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3265 odata->rights.maxdenies = (guint)maxdenies;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3266
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3267 account_online(gc);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3268 serv_finish_login(gc);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3269
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3270 if (bud_list_cache_exists(gc))
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3271 do_import(gc, NULL);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3272
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3273 debug_printf("buddy list loaded\n");
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3274
2672
5c9b7617a1f3 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
3275 aim_clientready(sess, fr->conn);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3276
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3277 /* AAA - Should call aim_bos_setidle with 0x0000 */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3278
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3279 /* AAA - Should only call reqofflinemsgs when using ICQ? */
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3280 aim_icq_reqofflinemsgs(sess);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3281
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3282 aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_CHATNAV);
4102
06290da3f88d [gaim-migrate @ 4317]
Mark Doliner <markdoliner@pidgin.im>
parents: 4076
diff changeset
3283 if (sess->authinfo->email)
06290da3f88d [gaim-migrate @ 4317]
Mark Doliner <markdoliner@pidgin.im>
parents: 4076
diff changeset
3284 aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_EMAIL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3285
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3286 return 1;
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
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3289 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
3290 va_list ap;
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3291 struct aim_icq_offlinemsg *msg;
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3292 struct aim_incomingim_ch4_args args;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3293 time_t t;
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3294
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3295 va_start(ap, fr);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3296 msg = va_arg(ap, struct aim_icq_offlinemsg *);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3297 va_end(ap);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3298
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3299 debug_printf("Received offline message. Converting to channel 4 ICBM...\n");
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3300 args.uin = msg->sender;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3301 args.type = msg->type;
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3302 args.flags = msg->flags;
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3303 args.msglen = msg->msglen;
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3304 args.msg = msg->msg;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3305 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
3306 incomingim_chan4(sess, fr->conn, NULL, &args, t);
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3307
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3308 return 1;
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3309 }
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3310
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3311 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
3312 {
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3313 aim_icq_ackofflinemsgs(sess);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3314 return 1;
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3315 }
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3316
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3317 static int gaim_icqsimpleinfo(aim_session_t *sess, aim_frame_t *fr, ...)
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3318 {
2773
3f711c709792 [gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2768
diff changeset
3319 struct gaim_connection *gc = sess->aux_data;
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3320 struct buddy *budlight;
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3321 va_list ap;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3322 struct aim_icq_info *info;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3323 gchar *buf, *tmp;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3324 gchar who[16];
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3325
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3326 va_start(ap, fr);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3327 info = va_arg(ap, struct aim_icq_info *);
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3328 va_end(ap);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3329
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3330 g_snprintf(who, sizeof(who), "%lu", info->uin);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3331 buf = g_strdup_printf("<b>UIN:</b> %s<br>", who);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3332 if (info->nick) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3333 tmp = buf;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3334 buf = g_strconcat(tmp, "<b>Nick:</b> ", info->nick, "<br>\n", NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3335 g_free(tmp);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3336 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3337 if (info->first) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3338 tmp = buf;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3339 buf = g_strconcat(tmp, "<b>First Name:</b> ", info->first, "<br>\n", NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3340 g_free(tmp);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3341 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3342 if (info->last) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3343 tmp = buf;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3344 buf = g_strconcat(tmp, "<b>Last Name:</b> ", info->last, "<br>\n", NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3345 g_free(tmp);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3346 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3347 if (info->email) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3348 tmp = buf;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3349 buf = g_strconcat(tmp, "<b>Email Address:</b> ", info->email, "<br>\n", NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3350 g_free(tmp);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3351 }
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3352
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3353 /* If the contact is away, then we also want to get their status message
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3354 * and show it in the same window as info. g_show_info_text gets the status
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3355 * message if the third arg is 0 (this seems really gross to me). The
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3356 * parse-icq-status-message function knows if it is putting it's message in
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3357 * an info window because the name will _not_ be in od->evilhack. For getting
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3358 * only the away message the contact's UIN is put in od->evilhack. */
3279
60aa1a4f9128 [gaim-migrate @ 3297]
Ari Pollak <ari@debian.org>
parents: 3270
diff changeset
3359 if ((budlight = find_buddy(gc, who))) {
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3360 if ((budlight->uc >> 16) & (AIM_ICQ_STATE_AWAY || AIM_ICQ_STATE_DND || AIM_ICQ_STATE_OUT || AIM_ICQ_STATE_BUSY || AIM_ICQ_STATE_CHAT)) {
3270
e7767f467498 [gaim-migrate @ 3288]
Mark Doliner <markdoliner@pidgin.im>
parents: 3267
diff changeset
3361 if (budlight->caps & AIM_CAPS_ICQSERVERRELAY)
e7767f467498 [gaim-migrate @ 3288]
Mark Doliner <markdoliner@pidgin.im>
parents: 3267
diff changeset
3362 g_show_info_text(gc, who, 0, buf, NULL);
e7767f467498 [gaim-migrate @ 3288]
Mark Doliner <markdoliner@pidgin.im>
parents: 3267
diff changeset
3363 else {
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3364 char *state_msg = gaim_icq_status((budlight->uc & 0xffff0000) >> 16);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
3365 g_show_info_text(gc, who, 2, buf, "<B>Status:</B> ", state_msg, "<BR>\n<HR><I>Remote client does not support sending status messages.</I><BR>\n", NULL);
3270
e7767f467498 [gaim-migrate @ 3288]
Mark Doliner <markdoliner@pidgin.im>
parents: 3267
diff changeset
3366 free(state_msg);
e7767f467498 [gaim-migrate @ 3288]
Mark Doliner <markdoliner@pidgin.im>
parents: 3267
diff changeset
3367 }
e7767f467498 [gaim-migrate @ 3288]
Mark Doliner <markdoliner@pidgin.im>
parents: 3267
diff changeset
3368 } else {
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3369 char *state_msg = gaim_icq_status((budlight->uc & 0xffff0000) >> 16);
3270
e7767f467498 [gaim-migrate @ 3288]
Mark Doliner <markdoliner@pidgin.im>
parents: 3267
diff changeset
3370 g_show_info_text(gc, who, 2, buf, "<B>Status:</B> ", state_msg, NULL);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3371 free(state_msg);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3372 }
3270
e7767f467498 [gaim-migrate @ 3288]
Mark Doliner <markdoliner@pidgin.im>
parents: 3267
diff changeset
3373 } else
e7767f467498 [gaim-migrate @ 3288]
Mark Doliner <markdoliner@pidgin.im>
parents: 3267
diff changeset
3374 g_show_info_text(gc, who, 2, buf, NULL);
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3375
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3376 g_free(buf);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3377
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3378 return 1;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3379 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3380
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3381 static int gaim_icqallinfo(aim_session_t *sess, aim_frame_t *fr, ...)
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3382 {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3383 struct gaim_connection *gc = sess->aux_data;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3384 va_list ap;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3385 struct aim_icq_info *info;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3386 gchar *buf, *tmp;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3387 gchar who[16];
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3388
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3389 va_start(ap, fr);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3390 info = va_arg(ap, struct aim_icq_info *);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3391 va_end(ap);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3392
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3393 g_snprintf(who, sizeof(who), "%lu", info->uin);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3394 buf = g_strdup_printf("<b>UIN:</b> %s<br>", who);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3395 if (info->nick) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3396 tmp = buf;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3397 buf = g_strconcat(tmp, "<b>Nick:</b> ", info->nick, "<br>\n", NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3398 g_free(tmp);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3399 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3400 if (info->first) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3401 tmp = buf;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3402 buf = g_strconcat(tmp, "<b>First Name:</b> ", info->first, "<br>\n", NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3403 g_free(tmp);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3404 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3405 if (info->last) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3406 tmp = buf;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3407 buf = g_strconcat(tmp, "<b>Last Name:</b> ", info->last, "<br>\n", NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3408 g_free(tmp);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3409 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3410 if (info->email) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3411 tmp = buf;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3412 buf = g_strconcat(tmp, "<b>Email Address:</b> ", info->email, "<br>\n", NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3413 g_free(tmp);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3414 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3415 if (info->personalwebpage) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3416 tmp = buf;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3417 buf = g_strconcat(tmp, "<b>Personal Webpage:</b> ", info->personalwebpage, "<br>\n", NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3418 g_free(tmp);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3419 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3420 if (info->info) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3421 tmp = buf;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3422 buf = g_strconcat(tmp, "<br><b>Additional Information:</b><br>", info->info, "<br><hr>\n", NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3423 g_free(tmp);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3424 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3425 if (info->homecity && info->homestate && info->homeaddr && info->homezip) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3426 tmp = buf;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3427 buf = g_strconcat(tmp, "<br><b>Home Address:</b><br>\n", info->homeaddr, "<br>\n", info->homecity, ", ", info->homestate, " ", info->homezip, "<hr>\n", NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3428 g_free(tmp);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3429 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3430
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3431 g_show_info_text(gc, who, 2, buf, NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3432 g_free(buf);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3433
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3434 return 1;
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3435 }
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3436
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3437 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
3438 {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3439 char *msg, *url;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3440 fu16_t wid, hei, delay;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3441 va_list ap;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3442
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3443 va_start(ap, fr);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3444 msg = va_arg(ap, char *);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3445 url = va_arg(ap, char *);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3446 wid = (fu16_t) va_arg(ap, int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3447 hei = (fu16_t) va_arg(ap, int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3448 delay = (fu16_t) va_arg(ap, int);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3449 va_end(ap);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3450
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3451 serv_got_popup(msg, url, wid, hei);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3452
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3453 return 1;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3454 }
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3455
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3456 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
3457 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3458 char *address, *SNs;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3459 int i, num;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3460 char *buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3461 int at = 0, len;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3462
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3463 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3464 address = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3465 num = va_arg(ap, int);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3466 SNs = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3467 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3468
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3469 len = num * (MAXSNLEN + 1) + 1024;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3470 buf = g_malloc(len);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3471 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
3472 for (i = 0; i < num; i++)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3473 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
3474 g_show_info_text(NULL, NULL, 2, buf, NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3475 g_free(buf);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3476
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3477 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3478 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3479
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3480 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
3481 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3482 char *address;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3483 char buf[BUF_LONG];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3484
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3485 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3486 address = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3487 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3488
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3489 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
3490 do_error_dialog(buf, NULL, GAIM_ERROR);
2086
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 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3493 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3494
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3495 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
3496 fu16_t status;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3497 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3498 char msg[256];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3499 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3500
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3501 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3502 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
3503 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3504
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3505 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
3506 status ? "unknown" : "email sent");
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3507 if (!status) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3508 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
3509 gc->username);
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
3510 do_error_dialog(_("Account Confirmation Requested"), msg, GAIM_INFO);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3511 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3512
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3513 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3514 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3515
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3516 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
3517 struct gaim_connection *gc = sess->aux_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3518 va_list ap;
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3519 fu16_t perms, err;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3520 char *url, *sn, *email;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3521 int change;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3522
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3523 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3524 change = va_arg(ap, int);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3525 perms = (fu16_t) va_arg(ap, unsigned int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
3526 err = (fu16_t) va_arg(ap, unsigned int);
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3527 url = va_arg(ap, char *);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3528 sn = va_arg(ap, char *);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3529 email = va_arg(ap, char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3530 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3531
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3532 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
3533 change ? "change" : "request", perms, err, url, sn, email);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3534
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3535 if (err && url) {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3536 char *dialog_msg;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3537 char *dialog_top = g_strdup_printf(_("Error Changing Account Info"));
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3538 switch (err) {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3539 case 0x0001: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3540 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
3541 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3542 case 0x0006: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3543 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
3544 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3545 case 0x000b: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3546 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
3547 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3548 case 0x001d: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3549 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
3550 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3551 case 0x0021: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3552 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
3553 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3554 case 0x0023: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3555 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
3556 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3557 default: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3558 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unknown error."), err);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3559 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3560 }
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3561 do_error_dialog(dialog_top, dialog_msg, GAIM_ERROR);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3562 g_free(dialog_top);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3563 g_free(dialog_msg);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3564 return 1;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3565 }
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3566
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3567 if (sn) {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3568 char *dialog_msg = g_strdup_printf(_("Your screen name is currently formated as follows:\n%s"), sn);
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
3569 do_error_dialog(_("Account Info"), dialog_msg, GAIM_INFO);
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3570 g_free(dialog_msg);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3571 }
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3572
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3573 if (email) {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3574 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
3575 do_error_dialog(_("Account Info"), dialog_msg, GAIM_INFO);
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3576 g_free(dialog_msg);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3577 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3578
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3579 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3580 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3581
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3582 static void oscar_keepalive(struct gaim_connection *gc) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3583 struct oscar_data *odata = (struct oscar_data *)gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3584 aim_flap_nop(odata->sess, odata->conn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3585 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3586
3001
9fc89391c8fa [gaim-migrate @ 3014]
Sean Egan <seanegan@pidgin.im>
parents: 3000
diff changeset
3587 static int oscar_send_typing(struct gaim_connection *gc, char *name, int typing) {
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3588 struct oscar_data *odata = (struct oscar_data *)gc->proto_data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3589 struct direct_im *dim = find_direct_im(odata, name);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3590 if (dim)
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3591 aim_send_typing(odata->sess, dim->conn, typing);
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3592 else {
3600
776215788f43 [gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents: 3596
diff changeset
3593 char *who = normalize(name);
776215788f43 [gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents: 3596
diff changeset
3594 if (g_hash_table_lookup(odata->supports_tn, who)) {
3596
94fcf584c358 [gaim-migrate @ 3698]
Mark Doliner <markdoliner@pidgin.im>
parents: 3595
diff changeset
3595 if (typing == TYPING)
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3596 aim_mtn_send(odata->sess, 0x0001, name, 0x0002);
3596
94fcf584c358 [gaim-migrate @ 3698]
Mark Doliner <markdoliner@pidgin.im>
parents: 3595
diff changeset
3597 else if (typing == TYPED)
94fcf584c358 [gaim-migrate @ 3698]
Mark Doliner <markdoliner@pidgin.im>
parents: 3595
diff changeset
3598 aim_mtn_send(odata->sess, 0x0001, name, 0x0001);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3599 else
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3600 aim_mtn_send(odata->sess, 0x0001, name, 0x0000);
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3601 }
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3602 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3603 return 0;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3604 }
3048
22ccf641f97b [gaim-migrate @ 3061]
Sean Egan <seanegan@pidgin.im>
parents: 3044
diff changeset
3605 static void oscar_ask_direct_im(struct gaim_connection *gc, char *name);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3606
3033
1f078ab46e76 [gaim-migrate @ 3046]
Sean Egan <seanegan@pidgin.im>
parents: 3031
diff changeset
3607 static int oscar_send_im(struct gaim_connection *gc, char *name, char *message, int len, int imflags) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3608 struct oscar_data *odata = (struct oscar_data *)gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3609 struct direct_im *dim = find_direct_im(odata, name);
2303
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
3610 int ret = 0;
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3611 GError *err = NULL;
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
3612
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3613 if (dim) {
3009
7cb524607c18 [gaim-migrate @ 3022]
Sean Egan <seanegan@pidgin.im>
parents: 3008
diff changeset
3614 if (dim->connected) { /* If we're not connected yet, send through server */
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
3615 /* AAA - The last parameter below is the encoding. Let Paco-Paco do something with it. */
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
3616 ret = aim_send_im_direct(odata->sess, dim->conn, message, len == -1 ? strlen(message) : len, 0);
3009
7cb524607c18 [gaim-migrate @ 3022]
Sean Egan <seanegan@pidgin.im>
parents: 3008
diff changeset
3617 if (ret == 0)
7cb524607c18 [gaim-migrate @ 3022]
Sean Egan <seanegan@pidgin.im>
parents: 3008
diff changeset
3618 return 1;
7cb524607c18 [gaim-migrate @ 3022]
Sean Egan <seanegan@pidgin.im>
parents: 3008
diff changeset
3619 else return ret;
7cb524607c18 [gaim-migrate @ 3022]
Sean Egan <seanegan@pidgin.im>
parents: 3008
diff changeset
3620 }
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3621 debug_printf("Direct IM pending, but not connected; sending through server\n");
3044
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
3622 } else if (len != -1) {
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
3623 /* Trying to send an IM image outside of a direct connection. */
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
3624 oscar_ask_direct_im(gc, name);
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
3625 return -ENOTCONN;
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
3626 }
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3627 if (imflags & IM_FLAG_AWAY) {
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3628 ret = aim_send_im(odata->sess, name, AIM_IMFLAGS_AWAY, message);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3629 } else {
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3630 struct aim_sendimext_args args;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3631 GSList *h = odata->hasicons;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3632 struct icon_req *ir = NULL;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3633 char *who = normalize(name);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3634 struct stat st;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3635 int len;
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3636
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3637 args.flags = AIM_IMFLAGS_ACK | AIM_IMFLAGS_CUSTOMFEATURES;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3638 if (odata->icq)
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3639 args.flags |= AIM_IMFLAGS_OFFLINE;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3640
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3641 args.features = gaim_features;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3642 args.featureslen = sizeof(gaim_features);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3643
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3644 while (h) {
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3645 ir = h->data;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3646 if (ir->request && !strcmp(who, ir->user))
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3647 break;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3648 h = h->next;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3649 }
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3650 if (h) {
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3651 ir->request = FALSE;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3652 args.flags |= AIM_IMFLAGS_BUDDYREQ;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3653 debug_printf("sending buddy icon request with message\n");
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3654 }
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3655
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3656 if (gc->user->iconfile[0] && !stat(gc->user->iconfile, &st)) {
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3657 FILE *file = fopen(gc->user->iconfile, "r");
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3658 if (file) {
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3659 char *buf = g_malloc(st.st_size);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3660 fread(buf, 1, st.st_size, file);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3661
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3662 args.iconlen = st.st_size;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3663 args.iconsum = aim_iconsum(buf, st.st_size);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3664 args.iconstamp = st.st_mtime;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3665
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3666 args.flags |= AIM_IMFLAGS_HASICON;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3667 debug_printf("Claiming to have an icon.\n");
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3668
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3669 fclose(file);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3670 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3671 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3672 }
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3673
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3674 args.destsn = name;
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3675
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3676 len = strlen(message);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3677 args.flags |= check_encoding(message);
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3678 if (args.flags & AIM_IMFLAGS_UNICODE) {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3679 debug_printf("Sending Unicode IM\n");
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3680 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
3681 if (err) {
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3682 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
3683 debug_printf("This really shouldn't happen!\n");
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3684 /* We really shouldn't try to send the
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3685 * IM now, but I'm not sure what to do */
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3686 }
3850
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
3687 } else if (args.flags & AIM_IMFLAGS_ISO_8859_1) {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3688 debug_printf("Sending ISO-8859-1 IM\n");
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3689 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
3690 if (err) {
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3691 debug_printf("conversion error: %s\n", err->message);
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3692 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
3693 args.flags ^= AIM_IMFLAGS_ISO_8859_1 | AIM_IMFLAGS_UNICODE;
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3694 len = strlen(message);
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3695 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
3696 if (err) {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3697 debug_printf("Error in unicode fallback: %s\n", err->message);
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3698 }
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3699 }
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3700 } else {
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3701 args.msg = message;
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3702 }
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3703 args.msglen = len;
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3704
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3705 ret = aim_send_im_ext(odata->sess, &args);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3706 }
2303
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
3707 if (ret >= 0)
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
3708 return 1;
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
3709 return ret;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3710 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3711
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3712 static void oscar_get_info(struct gaim_connection *g, char *name) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3713 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3714 if (odata->icq)
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3715 aim_icq_getsimpleinfo(odata->sess, name);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3716 else
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3717 /* 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
3718 * 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
3719 * insert in the middle. i hate people. */
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3720 aim_getinfo(odata->sess, odata->conn, name, AIM_GETINFO_AWAYMESSAGE);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3721 }
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3722
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3723 static void oscar_get_away(struct gaim_connection *g, char *who) {
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3724 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3725 if (odata->icq) {
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3726 struct buddy *budlight = find_buddy(g, who);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3727 if (budlight)
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3728 if ((budlight->uc & 0xffff0000) >> 16)
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3729 if (budlight->caps & AIM_CAPS_ICQSERVERRELAY)
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3730 aim_send_im_ch2_geticqmessage(odata->sess, who, (budlight->uc & 0xffff0000) >> 16);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3731 else
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3732 debug_printf("Error: Remote client does not support retrieval of status messages.\n");
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3733 else
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3734 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
3735 else
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3736 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
3737 } else
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3738 aim_getinfo(odata->sess, odata->conn, who, AIM_GETINFO_GENERALINFO);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3739 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3740
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3741 static void oscar_get_caps(struct gaim_connection *g, char *name) {
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3742 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3743 aim_getinfo(odata->sess, odata->conn, name, AIM_GETINFO_CAPABILITIES);
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3744 }
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3745
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
3746 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
3747 const char *maiden, const char *city, const char *state, const char *country, int web) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3748 /* AAA: some of these things are wrong, but i'm lazy */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3749 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3750 aim_setdirectoryinfo(odata->sess, odata->conn, first, middle, last,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3751 maiden, NULL, NULL, city, state, NULL, 0, web);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3752 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3753
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3754
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3755 static void oscar_set_idle(struct gaim_connection *g, int time) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3756 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3757 aim_bos_setidle(odata->sess, odata->conn, time);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3758 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3759
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3760 static void oscar_set_info(struct gaim_connection *g, char *info) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3761 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3762 gchar *inforeal, *unicode;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3763 fu32_t flags;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3764 int unicode_len;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3765
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3766 if (odata->rights.maxsiglen == 0)
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3767 do_error_dialog(_("Unable to set AIM profile."),
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3768 _("You have probably requested to set your profile before the login procedure completed. "
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3769 "Your profile remains unset; try setting it again when you are fully connected."), GAIM_ERROR);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3770
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3771 if (strlen(info) > odata->rights.maxsiglen) {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3772 gchar *errstr;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3773
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3774 errstr = g_strdup_printf(_("The maximum profile length of %d bytes has been exceeded. "
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3775 "Gaim has truncated and set it."), odata->rights.maxsiglen);
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3776 do_error_dialog("Profile too long.", errstr, GAIM_WARNING);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3777
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3778 g_free(errstr);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3779 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3780
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3781 inforeal = g_strndup(info, odata->rights.maxsiglen);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3782
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
3783 if (odata->icq)
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3784 aim_bos_setprofile(odata->sess, odata->conn, NULL, NULL, 0, NULL, NULL, 0, caps_icq);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3785 else {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3786 flags = check_encoding(inforeal);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3787
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3788 if (flags == 0) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3789 aim_bos_setprofile(odata->sess, odata->conn, "us-ascii", inforeal, strlen (inforeal),
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3790 NULL, NULL, 0, caps_aim);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3791 } else {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3792 unicode = g_convert (inforeal, strlen(inforeal), "UCS-2BE", "UTF-8", NULL,
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3793 &unicode_len, NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3794 aim_bos_setprofile(odata->sess, odata->conn, "unicode-2-0", unicode, unicode_len,
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3795 NULL, NULL, 0, caps_aim);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3796 g_free(unicode);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3797 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3798 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3799 g_free(inforeal);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3800
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3801 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3802 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3803
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3804 static void oscar_set_away_aim(struct gaim_connection *gc, struct oscar_data *od, const char *message)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3805 {
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3806 fu32_t flags;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3807 char *unicode;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3808 int unicode_len;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3809
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3810 if (od->rights.maxawaymsglen == 0)
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3811 do_error_dialog(_("Unable to set AIM away message."),
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3812 _("You have probably requested to set your away message before the login procedure completed. "
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3813 "You remain in a \"present\" state; try setting it again when you are fully connected."), GAIM_ERROR);
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3814
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
3815 if (gc->away) {
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3816 g_free(gc->away);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
3817 gc->away = NULL;
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
3818 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3819
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3820 if (!message) {
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3821 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
3822 return;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3823 }
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3824
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3825 if (strlen(message) > od->rights.maxawaymsglen) {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3826 gchar *errstr;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3827
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3828 errstr = g_strdup_printf(_("The away message length of %d bytes has been exceeded. "
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3829 "Gaim has truncated it and set you away."), od->rights.maxawaymsglen);
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3830 do_error_dialog("Away message too long.", errstr, GAIM_WARNING);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3831 g_free(errstr);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3832 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3833
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3834 gc->away = g_strndup(message, od->rights.maxawaymsglen);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3835 flags = check_encoding(message);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3836
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3837 if (flags == 0) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3838 aim_bos_setprofile(od->sess, od->conn, NULL, NULL, 0, "us-ascii", gc->away, strlen(gc->away),
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3839 caps_aim);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3840 } else {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3841 unicode = g_convert(message, strlen(message), "UCS-2BE", "UTF-8", NULL, &unicode_len, NULL);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3842 aim_bos_setprofile(od->sess, od->conn, NULL, NULL, 0, "unicode-2-0", unicode, unicode_len,
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3843 caps_aim);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3844 g_free(unicode);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3845 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3846
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3847 return;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3848 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3849
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3850 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
3851 {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3852
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
3853 if (gc->away) {
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
3854 g_free(gc->away);
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3855 gc->away = NULL;
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
3856 }
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3857
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3858 if (!strcmp(state, "Online"))
2866
159551b6db88 [gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2865
diff changeset
3859 aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_NORMAL);
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3860 else if (!strcmp(state, "Away")) {
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3861 aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_AWAY);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
3862 gc->away = g_strdup("");
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3863 } else if (!strcmp(state, "Do Not Disturb")) {
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3864 aim_setextstatus(od->sess, od->conn, 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
3865 gc->away = g_strdup("");
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3866 } else if (!strcmp(state, "Not Available")) {
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
3867 aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
3868 gc->away = g_strdup("");
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3869 } else if (!strcmp(state, "Occupied")) {
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3870 aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_BUSY);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
3871 gc->away = g_strdup("");
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3872 } else if (!strcmp(state, "Free For Chat")) {
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3873 aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_CHAT);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
3874 gc->away = g_strdup("");
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3875 } else if (!strcmp(state, "Invisible")) {
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3876 aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_INVISIBLE);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
3877 gc->away = g_strdup("");
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3878 } else if (!strcmp(state, GAIM_AWAY_CUSTOM)) {
2998
358f3655b070 [gaim-migrate @ 3011]
Sean Egan <seanegan@pidgin.im>
parents: 2995
diff changeset
3879 if (message) {
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
3880 aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY);
4111
93b27900416e [gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents: 4102
diff changeset
3881 gc->away = g_strdup("");
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3882 } else {
2866
159551b6db88 [gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2865
diff changeset
3883 aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_NORMAL);
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3884 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3885 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3886
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3887 return;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3888 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3889
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3890 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
3891 {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3892 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3893
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3894 if (od->icq)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3895 oscar_set_away_icq(gc, od, state, message);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3896 else
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3897 oscar_set_away_aim(gc, od, message);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3898
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3899 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3900 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3901
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3902 static void oscar_warn(struct gaim_connection *gc, char *name, int anon) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3903 struct oscar_data *odata = (struct oscar_data *)gc->proto_data;
2113
206f0011c41e [gaim-migrate @ 2123]
Adam Fritzler <mid@auk.cx>
parents: 2092
diff changeset
3904 aim_send_warning(odata->sess, odata->conn, name, anon ? AIM_WARN_ANON : 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3905 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3906
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3907 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
3908 const char *maiden, const char *city, const char *state, const char *country, const char *email) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3909 struct oscar_data *odata = (struct oscar_data *)gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3910 if (strlen(email))
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3911 aim_usersearch_address(odata->sess, odata->conn, email);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3912 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3913
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3914 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
3915 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3916 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3917 aim_add_buddy(od->sess, od->conn, name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3918 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3919 if ((od->sess->ssi.received_data) && !(aim_ssi_itemlist_exists(od->sess->ssi.local, name))) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3920 struct buddy *buddy = find_buddy(gc, name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3921 struct group *group = find_group_by_buddy(gc, name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3922 if (buddy && group) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3923 debug_printf("ssi: adding buddy %s to group %s\n", name, group->name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3924 aim_ssi_addbuddy(od->sess, od->conn, buddy->name, group->name, get_buddy_alias_only(buddy), NULL, NULL, 0);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3925 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3926 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3927 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3928 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3929
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3930 static void oscar_add_buddies(struct gaim_connection *gc, GList *buddies) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3931 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3932 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3933 char buf[MSG_LEN];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3934 int n=0;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3935 while (buddies) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3936 if (n > MSG_LEN - 18) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3937 aim_bos_setbuddylist(od->sess, od->conn, buf);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3938 n = 0;
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3939 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3940 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
3941 buddies = buddies->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3942 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3943 aim_bos_setbuddylist(od->sess, od->conn, buf);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3944 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3945 if (od->sess->ssi.received_data) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3946 while (buddies) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3947 struct buddy *buddy = find_buddy(gc, (const char *)buddies->data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3948 struct group *group = find_group_by_buddy(gc, (const char *)buddies->data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3949 if (buddy && group) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3950 debug_printf("ssi: adding buddy %s to group %s\n", (const char *)buddies->data, group->name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3951 aim_ssi_addbuddy(od->sess, od->conn, buddy->name, group->name, get_buddy_alias_only(buddy), NULL, NULL, 0);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3952 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3953 buddies = buddies->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3954 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3955 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3956 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3957 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3958
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3959 #ifndef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3960 static void oscar_move_buddy(struct gaim_connection *gc, const char *name, const char *old_group, const char *new_group) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3961 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3962 if (od->sess->ssi.received_data) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3963 debug_printf("ssi: moving buddy %s from group %s to group %s\n", name, old_group, new_group);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3964 aim_ssi_movebuddy(od->sess, od->conn, old_group, new_group, name);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3965 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3966 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3967 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3968
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3969 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
3970 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3971 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3972 aim_remove_buddy(od->sess, od->conn, name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3973 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3974 if (od->sess->ssi.received_data) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3975 debug_printf("ssi: deleting buddy %s from group %s\n", name, group);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3976 aim_ssi_delbuddy(od->sess, od->conn, name, group);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3977 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3978 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3979 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3980
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3981 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
3982 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3983 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3984 GList *cur;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3985 for (cur=buddies; cur; cur=cur->next)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3986 aim_remove_buddy(od->sess, od->conn, cur->data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3987 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3988 if (od->sess->ssi.received_data) {
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3989 while (buddies) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3990 debug_printf("ssi: deleting buddy %s from group %s\n", (char *)buddies->data, group);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3991 aim_ssi_delbuddy(od->sess, od->conn, buddies->data, group);
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3992 buddies = buddies->next;
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3993 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3994 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3995 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3996 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3997
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3998 #ifndef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3999 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
4000 struct oscar_data *od = (struct oscar_data *)g->proto_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4001
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4002 if (od->sess->ssi.received_data) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4003 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
4004 oscar_remove_buddies(g, members, old_group);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4005 oscar_add_buddies(g, members);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4006 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
4007 } else {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4008 aim_ssi_rename_group(od->sess, od->conn, old_group, new_group);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4009 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
4010 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4011 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4012 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4013
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4014 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
4015 struct gaim_connection *gc = sess->aux_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4016 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4017 int numtypes, i;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4018 fu16_t *maxitems;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4019 va_list ap;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4020
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4021 va_start(ap, fr);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4022 numtypes = va_arg(ap, int);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4023 maxitems = va_arg(ap, fu16_t *);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4024 va_end(ap);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4025
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4026 debug_printf("ssi rights:");
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4027 for (i=0; i<numtypes; i++)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4028 debug_printf(" max type %d = %hu, ", i, maxitems[i]);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4029
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4030 if (numtypes >= 0)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4031 od->rights.maxbuddies = maxitems[0];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4032 if (numtypes >= 1)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4033 od->rights.maxgroups = maxitems[1];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4034 if (numtypes >= 2)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4035 od->rights.maxpermits = maxitems[2];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4036 if (numtypes >= 3)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4037 od->rights.maxdenies = maxitems[3];
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4038
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4039 return 1;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4040 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4041
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4042 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
4043 struct gaim_connection *gc = sess->aux_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4044 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4045 struct aim_ssi_item *curitem;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4046 int tmp;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4047 /* AAA - use these?
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4048 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4049
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4050 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4051 fmtver = (fu16_t)va_arg(ap, int);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4052 numitems = (fu16_t)va_arg(ap, int);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4053 items = va_arg(ap, struct aim_ssi_item);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4054 timestamp = va_arg(ap, fu32_t);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4055 va_end(ap); */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4056
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4057 debug_printf("ssi: syncing local list and server list\n");
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4058
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4059 /* Activate SSI */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4060 /* Sending the enable causes other people to be able to see you */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4061 /* Maybe send it after merging the lists? */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4062 debug_printf("ssi: activating server-stored buddy list\n");
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4063 aim_ssi_enable(sess, fr->conn);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4064
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4065 /* Clean the buddy list */
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
4066 aim_ssi_cleanlist(sess, fr->conn);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4067
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4068 /* Add from server list to local list */
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4069 tmp = 0;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4070 for (curitem=sess->ssi.local; curitem; curitem=curitem->next) {
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4071 switch (curitem->type) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4072 case 0x0000: { /* Buddy */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4073 if ((curitem->name) && (!find_buddy(gc, curitem->name))) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4074 char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, curitem->name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4075 char *alias = aim_ssi_getalias(sess->ssi.local, gname, curitem->name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4076 debug_printf("ssi: adding buddy %s to group %s to local list\n", curitem->name, gname);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4077 add_buddy(gc, (gname ? gname : "orphans"), curitem->name, alias);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4078 free(alias);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4079 tmp++;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4080 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4081 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4082
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4083 case 0x0001: { /* Group */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4084 if (curitem->name && !find_group(gc, curitem->name))
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4085 add_group(gc, curitem->name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4086 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4087
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4088 case 0x0002: { /* Permit buddy */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4089 if (curitem->name) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4090 /* if (!find_permdeny_by_name(gc->permit, curitem->name)) { AAA */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4091 GSList *list;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4092 for (list=gc->permit; (list && aim_sncmp(curitem->name, list->data)); list=list->next);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4093 if (!list) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4094 char *name;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4095 debug_printf("ssi: adding permit buddy %s to local list\n", curitem->name);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4096 name = g_strdup(normalize(curitem->name));
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4097 gc->permit = g_slist_append(gc->permit, name);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4098 build_allow_list();
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4099 tmp++;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4100 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4101 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4102 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4103
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4104 case 0x0003: { /* Deny buddy */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4105 if (curitem->name) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4106 GSList *list;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4107 for (list=gc->deny; (list && aim_sncmp(curitem->name, list->data)); list=list->next);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4108 if (!list) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4109 char *name;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4110 debug_printf("ssi: adding deny buddy %s to local list\n", curitem->name);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4111 name = g_strdup(normalize(curitem->name));
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4112 gc->deny = g_slist_append(gc->deny, name);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4113 build_block_list();
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4114 tmp++;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4115 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4116 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4117 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4118
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4119 case 0x0004: { /* Permit/deny setting */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4120 if (curitem->data) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4121 fu8_t permdeny;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4122 if ((permdeny = aim_ssi_getpermdeny(sess->ssi.local)) && (permdeny != gc->permdeny)) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4123 debug_printf("ssi: changing permdeny from %d to %hhu\n", gc->permdeny, permdeny);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4124 gc->permdeny = permdeny;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4125 tmp++;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4126 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4127 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4128 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4129
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4130 case 0x0005: { /* Presence setting */
3109
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
4131 /* 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
4132 } break;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4133 } /* End of switch on curitem->type */
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4134 } /* End of for loop */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4135
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4136 /* If changes were made, then flush buddy list to file */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4137 if (tmp)
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4138 do_export(gc);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4139
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4140 /* Add from local list to server list */
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4141 if (gc) {
3017
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
4142 GSList *cur;
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
4143
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4144 /* Buddies */
3017
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
4145 cur = gc->groups;
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
4146 while (cur) {
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
4147 GSList *curbud;
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
4148 for (curbud=((struct group*)cur->data)->members; curbud; curbud=curbud->next)
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4149 if (!aim_ssi_itemlist_exists(sess->ssi.local, ((struct buddy*)curbud->data)->name)) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4150 debug_printf("ssi: adding buddy %s from local list to server list\n", ((struct buddy*)curbud->data)->name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4151 aim_ssi_addbuddy(od->sess, od->conn, ((struct buddy*)curbud->data)->name, ((struct group*)cur->data)->name, get_buddy_alias_only((struct buddy *)curbud->data), NULL, NULL, 0);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4152 }
3017
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
4153 cur = g_slist_next(cur);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4154 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4155
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4156 /* Permit list */
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4157 if (gc->permit) {
3017
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
4158 for (cur=gc->permit; cur; cur=cur->next)
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4159 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
4160 debug_printf("ssi: adding permit %s from local list to server list\n", (char *)cur->data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4161 aim_ssi_addpermit(od->sess, od->conn, cur->data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4162 }
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4163 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4164
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4165 /* Deny list */
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4166 if (gc->deny) {
3017
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
4167 for (cur=gc->deny; cur; cur=cur->next)
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4168 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
4169 debug_printf("ssi: adding deny %s from local list to server list\n", (char *)cur->data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4170 aim_ssi_adddeny(od->sess, od->conn, cur->data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4171 }
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4172 }
3109
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
4173
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
4174 /* Presence settings (idle time visibility) */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4175 if ((tmp = aim_ssi_getpresence(sess->ssi.local)) != 0xFFFFFFFF)
3109
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
4176 if (report_idle && !(tmp & 0x400))
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
4177 aim_ssi_setpresence(sess, fr->conn, tmp | 0x400);
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
4178
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
4179 /* Check for maximum number of buddies */
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
4180 for (cur=gc->groups, tmp=0; cur; cur=g_slist_next(cur)) {
3214
4a122e5439da [gaim-migrate @ 3231]
Sean Egan <seanegan@pidgin.im>
parents: 3212
diff changeset
4181 struct group* gr = (struct group*)cur->data;
4a122e5439da [gaim-migrate @ 3231]
Sean Egan <seanegan@pidgin.im>
parents: 3212
diff changeset
4182 tmp = tmp + g_slist_length(gr->members);
4a122e5439da [gaim-migrate @ 3231]
Sean Egan <seanegan@pidgin.im>
parents: 3212
diff changeset
4183 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4184 if (tmp > od->rights.maxbuddies) {
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
4185 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
4186 " 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
4187 od->rights.maxbuddies, tmp);
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
4188 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
4189 g_free(dialog_msg);
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
4190 }
3214
4a122e5439da [gaim-migrate @ 3231]
Sean Egan <seanegan@pidgin.im>
parents: 3212
diff changeset
4191
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
4192 } /* end if (gc) */
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
4193
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4194 return 1;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4195 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4196 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4197
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4198 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
4199 struct gaim_connection *gc = sess->aux_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4200 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4201 struct aim_ssi_tmp *retval;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4202
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4203 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4204 retval = va_arg(ap, struct aim_ssi_tmp *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4205 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4206
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4207 while (retval) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4208 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 : "no item");
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4209
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4210 if (retval->ack != 0xffff)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4211 switch (retval->ack) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4212 case 0x0000: { /* added successfully */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4213 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4214
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4215 case 0x000e: { /* contact requires authorization */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4216 if (retval->action == AIM_CB_SSI_ADD) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4217 struct name_data *data = g_new(struct name_data, 1);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4218 gchar *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?"), retval->name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4219 data->gc = gc;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4220 data->name = g_strdup(retval->name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4221 data->nick = NULL;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4222 do_ask_dialog(_("Request Authorization"), dialog_msg, data, _("Request Authorization"), gaim_auth_request, _("Cancel"), gaim_auth_dontrequest);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4223 g_free(dialog_msg);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4224 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4225 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4226
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4227 default: { /* La la la */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4228 debug_printf("ssi: Action 0x%04hx was unsuccessful with error 0x%04hx\n", retval->action, retval->ack);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4229 /* Should remove buddy from local list and give an error message? */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4230 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4231 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4232
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4233 retval = retval->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4234 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4235
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4236 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4237 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4238
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4239 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
4240 struct gaim_connection *gc = sess->aux_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4241 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4242 char *sn, *msg;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4243 gchar *dialog_msg;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4244 struct name_data *data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4245
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4246 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4247 sn = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4248 msg = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4249 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4250
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4251 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
4252
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4253 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?"), sn);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4254 data = g_new(struct name_data, 1);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4255 data->gc = gc;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4256 data->name = g_strdup(sn);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4257 data->nick = NULL;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4258 do_ask_dialog(_("Authorization Given"), dialog_msg, data, _("Yes"), gaim_icq_contactadd, _("No"), gaim_free_name_data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4259 g_free(dialog_msg);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4260
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4261 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4262 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4263
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4264 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
4265 struct gaim_connection *gc = sess->aux_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4266 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4267 char *sn, *msg;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4268 gchar *dialog_msg;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4269 struct name_data *data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4270
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4271 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4272 sn = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4273 msg = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4274 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4275
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4276 debug_printf("ssi: received authorization request from %s\n", sn);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4277
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4278 dialog_msg = g_strdup_printf(_("The user %s wants to add you to their buddy list for the following reason: %s"), sn, msg ? msg : _("No reason given."));
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4279 data = g_new(struct name_data, 1);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4280 data->gc = gc;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4281 data->name = g_strdup(sn);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4282 data->nick = NULL;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4283 do_ask_dialog(_("Authorization Request"), dialog_msg, data, _("Authorize"), gaim_auth_grant, _("Deny"), gaim_auth_dontgrant);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4284 g_free(dialog_msg);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4285
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4286 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4287 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4288
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4289 static int gaim_ssi_authreply(aim_session_t *sess, aim_frame_t *fr, ...) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4290 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4291 char *sn, *msg;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4292 gchar *dialog_msg;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4293 fu8_t reply;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4294
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4295 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4296 sn = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4297 reply = (fu8_t)va_arg(ap, int);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4298 msg = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4299 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4300
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4301 if (reply) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4302 /* Granted */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4303 dialog_msg = g_strdup_printf(_("The user %s has granted your request to add them to your contact list."), sn);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4304 do_error_dialog(_("Authorization Granted"), dialog_msg, GAIM_INFO);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4305 } else {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4306 /* Denied */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4307 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"), sn, msg ? msg : _("No reason given."));
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4308 do_error_dialog(_("Authorization Denied"), dialog_msg, GAIM_INFO);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4309 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4310 g_free(dialog_msg);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4311
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4312 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4313 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4314
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4315 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
4316 struct gaim_connection *gc = sess->aux_data;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4317 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4318 char *sn;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4319
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4320 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4321 sn = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4322 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4323
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4324 debug_printf("ssi: %s added you to their buddy list\n", sn);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4325 show_got_added(gc, NULL, sn, NULL, NULL);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4326
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4327 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4328 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4329
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4330 static GList *oscar_chat_info(struct gaim_connection *gc) {
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4331 GList *m = NULL;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4332 struct proto_chat_entry *pce;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4333
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4334 pce = g_new0(struct proto_chat_entry, 1);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4335 pce->label = _("Join what group:");
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4336 m = g_list_append(m, pce);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4337
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4338 pce = g_new0(struct proto_chat_entry, 1);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4339 pce->label = _("Exchange:");
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4340 pce->is_int = TRUE;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4341 pce->min = 4;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4342 pce->max = 20;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4343 m = g_list_append(m, pce);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4344
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4345 return m;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4346 }
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4347
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4348 static void oscar_join_chat(struct gaim_connection *g, GList *data) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4349 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4350 aim_conn_t *cur;
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4351 char *name;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4352 int *exchange;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4353
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4354 if (!data || !data->next)
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4355 return;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4356
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4357 name = data->data;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4358 exchange = data->next->data;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4359
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4360 debug_printf("Attempting to join chat room %s.\n", name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4361 if ((cur = aim_getconn_type(odata->sess, AIM_CONN_TYPE_CHATNAV))) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4362 debug_printf("chatnav exists, creating room\n");
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4363 aim_chatnav_createroom(odata->sess, cur, name, *exchange);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4364 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4365 /* this gets tricky */
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
4366 struct create_room *cr = g_new0(struct create_room, 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4367 debug_printf("chatnav does not exist, opening chatnav\n");
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
4368 cr->exchange = *exchange;
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
4369 cr->name = g_strdup(name);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
4370 odata->create_rooms = g_slist_append(odata->create_rooms, cr);
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
4371 aim_reqservice(odata->sess, odata->conn, AIM_CONN_TYPE_CHATNAV);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4372 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4373 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4374
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
4375 static void oscar_chat_invite(struct gaim_connection *g, int id, const char *message, const char *name) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4376 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4377 struct chat_connection *ccon = find_oscar_chat(g, id);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4378
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4379 if (!ccon)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4380 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4381
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4382 aim_chat_invite(odata->sess, odata->conn, name, message ? message : "",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4383 ccon->exchange, ccon->name, 0x0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4384 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4385
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4386 static void oscar_chat_leave(struct gaim_connection *g, int id) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4387 struct oscar_data *odata = g ? (struct oscar_data *)g->proto_data : NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4388 GSList *bcs = g->buddy_chats;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4389 struct conversation *b = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4390 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4391 int count = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4392
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4393 while (bcs) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4394 count++;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4395 b = (struct conversation *)bcs->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4396 if (id == b->id)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4397 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4398 bcs = bcs->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4399 b = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4400 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4401
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4402 if (!b)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4403 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4404
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4405 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
4406
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4407 c = find_oscar_chat(g, b->id);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4408 if (c != NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4409 if (odata)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4410 odata->oscar_chats = g_slist_remove(odata->oscar_chats, c);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4411 if (c->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
4412 gaim_input_remove(c->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4413 if (g && odata->sess)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4414 aim_conn_kill(odata->sess, &c->conn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4415 g_free(c->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4416 g_free(c->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4417 g_free(c);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4418 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4419 /* we do this because with Oscar it doesn't tell us we left */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4420 serv_got_chat_left(g, b->id);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4421 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4422
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4423 static int oscar_chat_send(struct gaim_connection *g, int id, char *message) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4424 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4425 GSList *bcs = g->buddy_chats;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4426 struct conversation *b = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4427 struct chat_connection *c = NULL;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4428 char *buf, *buf2;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4429 int i, j;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4430
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4431 while (bcs) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4432 b = (struct conversation *)bcs->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4433 if (id == b->id)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4434 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4435 bcs = bcs->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4436 b = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4437 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4438 if (!b)
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4439 return -EINVAL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4440
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4441 bcs = odata->oscar_chats;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4442 while (bcs) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4443 c = (struct chat_connection *)bcs->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4444 if (b == c->cnv)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4445 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4446 bcs = bcs->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4447 c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4448 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4449 if (!c)
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4450 return -EINVAL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4451
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4452 buf = g_malloc(strlen(message) * 4 + 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4453 for (i = 0, j = 0; i < strlen(message); i++) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4454 if (message[i] == '\n') {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4455 buf[j++] = '<';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4456 buf[j++] = 'B';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4457 buf[j++] = 'R';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4458 buf[j++] = '>';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4459 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4460 buf[j++] = message[i];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4461 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4462 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4463 buf[j] = '\0';
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4464
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4465 if (strlen(buf) > c->maxlen)
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4466 return -E2BIG;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4467
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4468 buf2 = strip_html(buf);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4469 if (strlen(buf2) > c->maxvis) {
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4470 g_free(buf2);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4471 return -E2BIG;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4472 }
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4473 g_free(buf2);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4474
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4475 aim_chat_send_im(odata->sess, c->conn, 0, buf, strlen(buf));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4476 g_free(buf);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4477 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4478 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4479
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4480 static char **oscar_list_icon(int uc) {
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4481 if (uc == 0)
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4482 return (char **)icon_online_xpm;
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4483 if (uc & 0xffff0000) {
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4484 uc >>= 16;
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
4485 if (uc & AIM_ICQ_STATE_INVISIBLE)
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
4486 return icon_offline_xpm;
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
4487 if (uc & AIM_ICQ_STATE_CHAT)
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
4488 return icon_ffc_xpm;
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4489 if (uc & AIM_ICQ_STATE_DND)
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4490 return icon_dnd_xpm;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4491 if (uc & AIM_ICQ_STATE_OUT)
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4492 return icon_na_xpm;
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
4493 if (uc & AIM_ICQ_STATE_BUSY)
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
4494 return icon_occ_xpm;
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
4495 if (uc & AIM_ICQ_STATE_AWAY)
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
4496 return icon_away_xpm;
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4497 return icon_online_xpm;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4498 }
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
4499 if (uc & UC_UNAVAILABLE)
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
4500 return (char **)away_icon_xpm;
3079
e55c9a9cc4fc [gaim-migrate @ 3093]
Mark Doliner <markdoliner@pidgin.im>
parents: 3074
diff changeset
4501 if (uc & UC_WIRELESS)
e55c9a9cc4fc [gaim-migrate @ 3093]
Mark Doliner <markdoliner@pidgin.im>
parents: 3074
diff changeset
4502 return (char **)wireless_icon_xpm;
2689
bd713491a0d7 [gaim-migrate @ 2702]
Adam Fritzler <mid@auk.cx>
parents: 2681
diff changeset
4503 if (uc & UC_AB)
2679
209a5948cb6e [gaim-migrate @ 2692]
Adam Fritzler <mid@auk.cx>
parents: 2675
diff changeset
4504 return (char **)ab_xpm;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4505 if (uc & UC_AOL)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4506 return (char **)aol_icon_xpm;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4507 if (uc & UC_ADMIN)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4508 return (char **)admin_icon_xpm;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4509 if (uc & UC_UNCONFIRMED)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4510 return (char **)dt_icon_xpm;
2297
d957c91e8562 [gaim-migrate @ 2307]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2288
diff changeset
4511 if (uc & UC_NORMAL)
d957c91e8562 [gaim-migrate @ 2307]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2288
diff changeset
4512 return (char **)free_icon_xpm;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4513 return NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4514 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4515
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4516 /*
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4517 * This is called after the raw data for a file has been transferred (whether
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4518 * we are sending or receiving), but there are other files remaining.
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4519 */
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
4520 void oscar_file_transfer_nextfile(struct gaim_connection *gc,
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4521 struct file_transfer *xfer) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4522 struct oscar_file_transfer *oft = find_oft_by_xfer(gc, xfer);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4523 aim_conn_t *conn = oft->conn;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4524 aim_session_t *sess = aim_conn_getsess(conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4525
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4526 oft->filesdone++;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4527 oft->watcher = gaim_input_add(conn->fd, GAIM_INPUT_READ,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4528 oscar_callback, conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4529
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4530 /* If this is an incoming sendfile transfer, we send an OK
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4531 * message to the sender; if this is an outgoing sendfile, we
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4532 * will get an OK from the receiver that will be handled in
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4533 * oscar_sendfile_out_done(), so we don't need to do anything
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4534 * yet.
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4535 */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4536
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4537 if (oft->type == OFT_SENDFILE_IN)
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4538 aim_oft_end(sess, conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4539 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4540
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4541 /*
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4542 * This is called after the raw data for a file has been transferred (whether
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4543 * we are sending or receiving), and it is the last file in the set, so we
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4544 * can tear down the connection.
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4545 */
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
4546 void oscar_file_transfer_done(struct gaim_connection *gc,
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4547 struct file_transfer *xfer) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4548 struct oscar_file_transfer *oft = find_oft_by_xfer(gc, xfer);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4549 aim_conn_t *conn = oft->conn;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4550 aim_session_t *sess = aim_conn_getsess(conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4551
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4552 oft->filesdone++;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4553 if (oft->type == OFT_SENDFILE_IN) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4554 aim_oft_end(sess, conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4555 oscar_file_transfer_disconnect(sess, conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4556 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4557 else if (oft->type == OFT_SENDFILE_OUT) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4558 /* Wait for response before closing connection. */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4559 oft->watcher = gaim_input_add(conn->fd, GAIM_INPUT_READ,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4560 oscar_callback, conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4561 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4562 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4563
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4564 /*
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4565 * This is called when there is raw data ready to be sent or received; all the
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4566 * protocol details have been taken care of.
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4567 */
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4568 static int oscar_file_transfer_do(aim_session_t *sess, aim_frame_t *fr, ...) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4569 struct gaim_connection *gc = sess->aux_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4570 va_list ap;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4571 aim_conn_t *conn;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4572 struct oscar_file_transfer *oft;
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
4573 struct aim_fileheader_t *fh;
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4574 int err;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4575
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4576 va_start(ap, fr);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4577 conn = va_arg(ap, aim_conn_t *);
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
4578 fh = va_arg(ap, struct aim_fileheader_t *);
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
4579 va_end(ap);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4580
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4581 oft = find_oft_by_conn(gc, conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4582
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4583 /* Don't use the regular input handler for the raw data. */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4584 gaim_input_remove(oft->watcher);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4585 oft->watcher = 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4586
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4587 if (oft->type == OFT_SENDFILE_IN) {
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4588 /* AAA convert fh->name from UCS-2 to UTF-8 if (fh->nencode == 0x0002) */
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4589 err = transfer_in_do(oft->xfer, conn->fd, fh->name, fh->size);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4590 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4591 else {
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
4592 err = transfer_out_do(oft->xfer, conn->fd, fh->nrecvd);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4593 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4594
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4595 if (err) {
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4596 /* There was an error; cancel the transfer. */
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4597 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4598 aim_conn_t *bosconn = od->conn;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4599 aim_canceltransfer(sess, bosconn, oft->cookie,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4600 oft->sn, AIM_CAPS_SENDFILE);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4601 oscar_file_transfer_disconnect(sess, oft->conn);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4602 }
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4603
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4604 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4605 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4606
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4607 static int gaim_directim_initiate(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4608 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4609 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4610 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4611 aim_conn_t *newconn, *listenerconn;
2235
8828cb249372 [gaim-migrate @ 2245]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2232
diff changeset
4612 struct conversation *cnv;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4613 struct direct_im *dim;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4614 char buf[256];
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4615 char *sn;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4616
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4617 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4618 newconn = va_arg(ap, aim_conn_t *);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4619 listenerconn = va_arg(ap, aim_conn_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4620 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4621
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4622 aim_conn_close(listenerconn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4623 aim_conn_kill(sess, &listenerconn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4624
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4625 sn = g_strdup(aim_directim_getsn(newconn));
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4626
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4627 debug_printf("DirectIM: initiate success to %s\n", sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4628 dim = find_direct_im(od, sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4629
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4630 if (!(cnv = find_conversation(sn)))
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4631 cnv = new_conversation(sn);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
4632 gaim_input_remove(dim->watcher);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4633 dim->conn = newconn;
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
4634 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4635 oscar_callback, dim->conn);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4636 dim->connected = TRUE;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4637 g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4638 g_free(sn);
2856
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2833
diff changeset
4639 write_to_conv(cnv, buf, WFLAG_SYSTEM, NULL, time(NULL), -1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4640
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4641 aim_conn_addhandler(sess, newconn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4642 gaim_directim_incoming, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4643 aim_conn_addhandler(sess, newconn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4644 gaim_directim_typing, 0);
3033
1f078ab46e76 [gaim-migrate @ 3046]
Sean Egan <seanegan@pidgin.im>
parents: 3031
diff changeset
4645 aim_conn_addhandler(sess, newconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_IMAGETRANSFER,
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4646 gaim_update_ui, 0);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4647 return 1;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4648 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4649
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4650 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
4651 va_list ap;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4652 char *sn;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4653 double percent;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4654 struct gaim_connection *gc = sess->aux_data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4655 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4656 struct conversation *c;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4657 struct direct_im *dim;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4658
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4659 va_start(ap, fr);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4660 sn = va_arg(ap, char *);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4661 percent = va_arg(ap, double);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4662 va_end(ap);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4663
2994
72d79fc3eeaa [gaim-migrate @ 3007]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
4664 if (!(dim = find_direct_im(od, sn)))
72d79fc3eeaa [gaim-migrate @ 3007]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
4665 return 1;
3059
bd4d661482f5 [gaim-migrate @ 3073]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3048
diff changeset
4666 if (dim->watcher) {
bd4d661482f5 [gaim-migrate @ 3073]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3048
diff changeset
4667 gaim_input_remove(dim->watcher); /* Otherwise, the callback will callback */
bd4d661482f5 [gaim-migrate @ 3073]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3048
diff changeset
4668 dim->watcher = 0;
bd4d661482f5 [gaim-migrate @ 3073]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3048
diff changeset
4669 }
3044
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
4670 while (gtk_events_pending())
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
4671 gtk_main_iteration();
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
4672
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4673 if ((c = find_conversation(sn)))
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4674 update_progress(c, percent);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4675 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4676 oscar_callback, dim->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4677
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4678 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4679 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4680
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4681 static int gaim_directim_incoming(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4682 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4683 char *msg, *sn;
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4684 int len, encoding;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4685 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4686
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4687 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4688 sn = va_arg(ap, char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4689 msg = va_arg(ap, char *);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4690 len = va_arg(ap, int);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4691 encoding = va_arg(ap, int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4692 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4693
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4694 debug_printf("Got DirectIM message from %s\n", sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4695
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4696 /* AAA - I imagine Paco-Paco will want to do some voodoo with the encoding here */
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4697 serv_got_im(gc, sn, msg, 0, time(NULL), len);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4698
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4699 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4700 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4701
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4702 static int gaim_directim_typing(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4703 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4704 char *sn;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4705 int typing;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4706 struct gaim_connection *gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4707
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4708 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4709 sn = va_arg(ap, char *);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4710 typing = va_arg(ap, int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4711 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4712
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4713 if (typing) {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4714 /* 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
4715 debug_printf("ohmigod! %s has started typing (DirectIM). He's going to send you a message! *squeal*\n", sn);
3768
bb6cc9d30511 [gaim-migrate @ 3907]
Nathan Walp <nwalp@pidgin.im>
parents: 3752
diff changeset
4716 serv_got_typing(gc,sn,0, TYPING);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4717 } else
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4718 serv_got_typing_stopped(gc,sn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4719 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4720 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4721
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4722 struct ask_do_dir_im {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4723 char *who;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4724 struct gaim_connection *gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4725 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4726
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
4727 static void oscar_cancel_direct_im(struct ask_do_dir_im *data) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4728 g_free(data);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4729 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4730
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
4731 static void oscar_direct_im(struct ask_do_dir_im *data) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4732 struct gaim_connection *gc = data->gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4733 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4734 struct direct_im *dim;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4735
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4736 dim = find_direct_im(od, data->who);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4737 if (dim) {
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4738 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
4739 od->direct_ims = g_slist_remove(od->direct_ims, dim);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4740 gaim_input_remove(dim->watcher);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4741 g_free(dim);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4742 debug_printf("Gave up on old direct IM, trying again\n");
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4743 } else {
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
4744 do_error_dialog("DirectIM already open.", NULL, GAIM_ERROR);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4745 return;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4746 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4747 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4748 dim = g_new0(struct direct_im, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4749 dim->gc = gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4750 g_snprintf(dim->name, sizeof dim->name, "%s", data->who);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4751
2717
b97d1ea4e28c [gaim-migrate @ 2730]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2713
diff changeset
4752 dim->conn = aim_directim_initiate(od->sess, data->who);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4753 if (dim->conn != NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4754 od->direct_ims = g_slist_append(od->direct_ims, dim);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
4755 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4756 oscar_callback, dim->conn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4757 aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINITIATE,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4758 gaim_directim_initiate, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4759 } else {
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
4760 do_error_dialog(_("Unable to open Direct IM"), NULL, GAIM_ERROR);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4761 g_free(dim);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4762 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4763 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4764
2170
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4765 static void oscar_ask_direct_im(struct gaim_connection *gc, gchar *who) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4766 char buf[BUF_LONG];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4767 struct ask_do_dir_im *data = g_new0(struct ask_do_dir_im, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4768 data->who = who;
2170
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4769 data->gc = gc;
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
4770 g_snprintf(buf, sizeof(buf), _("You have selected to open a Direct IM connection with %s."), who);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
4771 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);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4772 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4773
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4774 static void oscar_get_away_msg(struct gaim_connection *gc, char *who) {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4775 struct oscar_data *od = gc->proto_data;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4776 od->evilhack = g_slist_append(od->evilhack, g_strdup(normalize(who)));
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4777 if (od->icq) {
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4778 struct buddy *budlight = find_buddy(gc, who);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4779 if (budlight)
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4780 if ((budlight->uc >> 16) & (AIM_ICQ_STATE_AWAY || AIM_ICQ_STATE_DND || AIM_ICQ_STATE_OUT || AIM_ICQ_STATE_BUSY || AIM_ICQ_STATE_CHAT))
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4781 if (budlight->caps & AIM_CAPS_ICQSERVERRELAY)
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4782 aim_send_im_ch2_geticqmessage(od->sess, who, (budlight->uc & 0xffff0000) >> 16);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4783 else {
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4784 char *state_msg = gaim_icq_status((budlight->uc & 0xffff0000) >> 16);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4785 char *dialog_msg = g_strdup_printf(_("<B>UIN:</B> %s<BR><B>Status:</B> %s<BR><HR><I>Remote client does not support sending status messages.</I><BR>"), who, state_msg);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4786 g_show_info_text(gc, who, 2, dialog_msg, NULL);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4787 free(state_msg);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4788 free(dialog_msg);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4789 }
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4790 else {
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4791 char *state_msg = gaim_icq_status((budlight->uc & 0xffff0000) >> 16);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4792 char *dialog_msg = g_strdup_printf(_("<B>UIN:</B> %s<BR><B>Status:</B> %s<BR><HR><I>User has no status message.</I><BR>"), who, state_msg);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4793 g_show_info_text(gc, who, 2, dialog_msg, NULL);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4794 free(state_msg);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4795 free(dialog_msg);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4796 }
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4797 else
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
4798 do_error_dialog("Could not find contact in local list, therefore unable to request status message.\n", NULL, GAIM_ERROR);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4799 } else
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4800 oscar_get_info(gc, who);
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4801 }
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4802
2170
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4803 static GList *oscar_buddy_menu(struct gaim_connection *gc, char *who) {
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4804 GList *m = NULL;
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4805 struct proto_buddy_menu *pbm;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4806 char *n = g_strdup(normalize(gc->username));
2833
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4807 struct oscar_data *odata = gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4808
2170
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4809 pbm = g_new0(struct proto_buddy_menu, 1);
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4810 pbm->label = _("Get Info");
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4811 pbm->callback = oscar_get_info;
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4812 pbm->gc = gc;
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4813 m = g_list_append(m, pbm);
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4814
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4815 if (odata->icq) {
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4816 pbm = g_new0(struct proto_buddy_menu, 1);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4817 pbm->label = _("Get Status Msg");
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4818 pbm->callback = oscar_get_away_msg;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4819 pbm->gc = gc;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4820 m = g_list_append(m, pbm);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4821 } else {
2170
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4822 pbm = g_new0(struct proto_buddy_menu, 1);
2833
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4823 pbm->label = _("Get Away Msg");
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4824 pbm->callback = oscar_get_away_msg;
2170
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4825 pbm->gc = gc;
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4826 m = g_list_append(m, pbm);
2833
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4827
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4828 if (strcmp(n, normalize(who))) {
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4829 pbm = g_new0(struct proto_buddy_menu, 1);
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4830 pbm->label = _("Direct IM");
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4831 pbm->callback = oscar_ask_direct_im;
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4832 pbm->gc = gc;
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4833 m = g_list_append(m, pbm);
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4834
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4835 pbm = g_new0(struct proto_buddy_menu, 1);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4836 pbm->label = _("Send File");
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4837 pbm->callback = oscar_ask_send_file;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4838 pbm->gc = gc;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4839 m = g_list_append(m, pbm);
2833
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4840 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4841 }
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
4842
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
4843 pbm = g_new0(struct proto_buddy_menu, 1);
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
4844 pbm->label = _("Get Capabilities");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
4845 pbm->callback = oscar_get_caps;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
4846 pbm->gc = gc;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
4847 m = g_list_append(m, pbm);
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
4848
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4849 g_free(n);
2170
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4850
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4851 return m;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4852 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4853
3456
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4854 static GList *oscar_edit_buddy_menu(struct gaim_connection *gc, char *who)
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4855 {
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4856 GList *m = NULL;
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4857 struct proto_buddy_menu *pbm;
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4858 struct oscar_data *odata = gc->proto_data;
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4859
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4860 if (odata->icq) {
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4861 pbm = g_new0(struct proto_buddy_menu, 1);
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4862 pbm->label = _("Get Info");
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4863 pbm->callback = oscar_get_info;
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4864 pbm->gc = gc;
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4865 m = g_list_append(m, pbm);
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4866 }
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4867
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4868 return m;
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4869 }
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4870
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4871 static void oscar_set_permit_deny(struct gaim_connection *gc) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4872 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4873 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4874 GSList *list, *g;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4875 char buf[MAXMSGLEN];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4876 int at;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4877
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4878 switch(gc->permdeny) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4879 case 1:
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4880 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
4881 break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4882 case 2:
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4883 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
4884 break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4885 case 3:
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4886 list = gc->permit;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4887 at = 0;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4888 while (list) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4889 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
4890 list = list->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4891 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4892 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, buf);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4893 break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4894 case 4:
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4895 list = gc->deny;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4896 at = 0;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4897 while (list) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4898 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
4899 list = list->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4900 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4901 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, buf);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4902 break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4903 case 5:
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4904 g = gc->groups;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4905 at = 0;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4906 while (g) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4907 list = ((struct group *)g->data)->members;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4908 while (list) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4909 at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", ((struct buddy *)list->data)->name);
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4910 list = list->next;
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4911 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4912 g = g->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4913 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4914 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, buf);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4915 break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4916 default:
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4917 break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4918 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4919 signoff_blocked(gc);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4920 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4921 if (od->sess->ssi.received_data)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4922 aim_ssi_setpermdeny(od->sess, od->conn, gc->permdeny, 0xffffffff);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4923 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4924 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4925
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4926 static void oscar_add_permit(struct gaim_connection *gc, char *who) {
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4927 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4928 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4929 if (gc->permdeny != 3) return;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4930 oscar_set_permit_deny(gc);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4931 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4932 debug_printf("ssi: About to add a permit\n");
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4933 if (od->sess->ssi.received_data)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4934 aim_ssi_addpermit(od->sess, od->conn, who);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4935 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4936 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4937
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4938 static void oscar_add_deny(struct gaim_connection *gc, char *who) {
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4939 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4940 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4941 if (gc->permdeny != 4) return;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4942 oscar_set_permit_deny(gc);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4943 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4944 debug_printf("ssi: About to add a deny\n");
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4945 if (od->sess->ssi.received_data)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4946 aim_ssi_adddeny(od->sess, od->conn, who);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4947 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4948 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4949
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4950 static void oscar_rem_permit(struct gaim_connection *gc, char *who) {
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4951 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4952 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4953 if (gc->permdeny != 3) return;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4954 oscar_set_permit_deny(gc);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4955 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4956 debug_printf("ssi: About to delete a permit\n");
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4957 if (od->sess->ssi.received_data)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4958 aim_ssi_delpermit(od->sess, od->conn, who);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4959 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4960 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4961
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4962 static void oscar_rem_deny(struct gaim_connection *gc, char *who) {
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4963 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4964 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4965 if (gc->permdeny != 4) return;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4966 oscar_set_permit_deny(gc);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4967 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4968 debug_printf("ssi: About to delete a deny\n");
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4969 if (od->sess->ssi.received_data)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4970 aim_ssi_deldeny(od->sess, od->conn, who);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4971 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4972 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4973
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4974 static GList *oscar_away_states(struct gaim_connection *gc)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4975 {
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4976 struct oscar_data *od = gc->proto_data;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4977 GList *m = NULL;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4978
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4979 if (!od->icq)
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4980 return g_list_append(m, GAIM_AWAY_CUSTOM);
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4981
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4982 m = g_list_append(m, "Online");
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4983 m = g_list_append(m, "Away");
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4984 m = g_list_append(m, "Do Not Disturb");
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4985 m = g_list_append(m, "Not Available");
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4986 m = g_list_append(m, "Occupied");
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4987 m = g_list_append(m, "Free For Chat");
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4988 m = g_list_append(m, "Invisible");
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4989
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4990 return m;
2086
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
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4993 static void oscar_change_email(struct gaim_connection *gc, char *email)
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4994 {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4995 struct oscar_data *od = gc->proto_data;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4996 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
4997
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4998 if (conn) {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4999 aim_admin_setemail(od->sess, conn, email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5000 } else {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5001 od->setemail = TRUE;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5002 od->email = g_strdup(email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5003 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5004 }
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5005 }
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5006
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5007 static void oscar_format_screenname(struct gaim_connection *gc, char *nick) {
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5008 struct oscar_data *od = gc->proto_data;
3031
19df9f33607c [gaim-migrate @ 3044]
Sean Egan <seanegan@pidgin.im>
parents: 3017
diff changeset
5009 if (!strcmp(normalize(nick), normalize(gc->username))) {
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5010 if (!aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH)) {
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5011 od->setnick = TRUE;
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5012 od->newsn = g_strdup(nick);
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5013 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5014 } else {
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5015 aim_admin_setnick(od->sess, aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH), nick);
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5016 }
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5017 } else {
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
5018 do_error_dialog("The new formatting is invalid.",
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
5019 "Screenname formatting can change only capitalization and whitespace.", GAIM_ERROR);
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5020 }
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5021 }
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5022
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5023 static void oscar_do_action(struct gaim_connection *gc, char *act)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5024 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5025 struct oscar_data *od = gc->proto_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5026 aim_conn_t *conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5027
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5028 if (!strcmp(act, "Set User Info")) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5029 show_set_info(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5030 } else if (!strcmp(act, "Change Password")) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5031 show_change_passwd(gc);
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5032 } else if (!strcmp(act, "Format Screenname")) {
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5033 do_prompt_dialog("New screenname formatting:",
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5034 gc->displayname, gc, oscar_format_screenname, NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5035 } else if (!strcmp(act, "Confirm Account")) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5036 if (!conn) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5037 od->conf = TRUE;
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
5038 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5039 } else
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
5040 aim_admin_reqconfirm(od->sess, conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5041 } else if (!strcmp(act, "Display Current Registered Address")) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5042 if (!conn) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5043 od->reqemail = TRUE;
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
5044 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5045 } else
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
5046 aim_admin_getinfo(od->sess, conn, 0x11);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5047 } else if (!strcmp(act, "Change Current Registered Address")) {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5048 do_prompt_dialog("Change Address To: ", NULL, gc, oscar_change_email, NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5049 } else if (!strcmp(act, "Search for Buddy by Email")) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5050 show_find_email(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5051 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5052 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5053
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5054 static GList *oscar_actions()
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5055 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5056 GList *m = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5057
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5058 m = g_list_append(m, "Set User Info");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5059 m = g_list_append(m, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5060 m = g_list_append(m, "Change Password");
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
5061 m = g_list_append(m, "Format Screenname");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5062 m = g_list_append(m, "Confirm Account");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5063 m = g_list_append(m, "Display Current Registered Address");
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5064 m = g_list_append(m, "Change Current Registered Address");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5065 m = g_list_append(m, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5066 m = g_list_append(m, "Search for Buddy by Email");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5067
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5068 return m;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5069 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5070
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
5071 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
5072 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5073 struct oscar_data *od = gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5074 if (!aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5075 od->chpass = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5076 od->oldp = g_strdup(old);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5077 od->newp = g_strdup(new);
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
5078 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5079 } else {
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
5080 aim_admin_changepasswd(od->sess, aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH),
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5081 new, old);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5082 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5083 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5084
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5085 static void oscar_convo_closed(struct gaim_connection *gc, char *who)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5086 {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5087 struct oscar_data *od = gc->proto_data;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5088 struct direct_im *dim = find_direct_im(od, who);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5089
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5090 if (!dim)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5091 return;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5092
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5093 od->direct_ims = g_slist_remove(od->direct_ims, dim);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5094 gaim_input_remove(dim->watcher);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5095 aim_conn_kill(od->sess, &dim->conn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5096 g_free(dim);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5097 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5098
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5099 static fu32_t check_encoding(const char *utf8)
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5100 {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5101 int i = 0;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5102 fu32_t encodingflag = 0;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5103
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5104 /* Determine how we can send this message. Per the
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5105 * warnings elsewhere in this file, these little
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5106 * checks determine the simplest encoding we can use
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5107 * for a given message send using it. */
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5108 while (utf8[i]) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5109 if ((unsigned char)utf8[i] > 0x7f) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5110 /* not ASCII! */
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5111 encodingflag = AIM_IMFLAGS_ISO_8859_1;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5112 break;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5113 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5114 i++;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5115 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5116 while (utf8[i]) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5117 /* ISO-8859-1 is 0x00-0xbf in the first byte
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5118 * followed by 0xc0-0xc3 in the second */
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5119 if ((unsigned char)utf8[i] < 0x80) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5120 i++;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5121 continue;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5122 } else if (((unsigned char)utf8[i] & 0xfc) == 0xc0 &&
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5123 ((unsigned char)utf8[i + 1] & 0xc0) == 0x80) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5124 i += 2;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5125 continue;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5126 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5127 encodingflag = AIM_IMFLAGS_UNICODE;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5128 break;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5129 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5130
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5131 return encodingflag;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5132 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5133
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5134 static fu32_t parse_encoding(const char *enc)
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5135 {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5136 char *charset;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5137
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5138 /* If anything goes wrong, fall back on ASCII and print a message */
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5139 charset = strstr(enc, "charset=");
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5140 if (charset == NULL) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5141 debug_printf("No charset specified for info, assuming ASCII\n");
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5142 return 0;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5143 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5144 charset += 8;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5145 if (!strcmp(charset, "\"us-ascii\"")) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5146 return 0;
4166
75e205fa4ddb [gaim-migrate @ 4395]
Ethan Blanton <elb@pidgin.im>
parents: 4159
diff changeset
5147 } else if (!strcmp(charset, "\"iso-8859-1\"")) {
75e205fa4ddb [gaim-migrate @ 4395]
Ethan Blanton <elb@pidgin.im>
parents: 4159
diff changeset
5148 return AIM_IMFLAGS_ISO_8859_1;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5149 } else if (!strcmp(charset, "\"unicode-2-0\"")) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5150 return AIM_IMFLAGS_UNICODE;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5151 } else {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5152 debug_printf("Unrecognized character set '%s', using ASCII\n", charset);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5153 return 0;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5154 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5155 }
3035
5354475cd3f6 [gaim-migrate @ 3048]
Rob Flynn <gaim@robflynn.com>
parents: 3034
diff changeset
5156
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5157 static struct prpl *my_protocol = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5158
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
5159 G_MODULE_EXPORT void oscar_init(struct prpl *ret) {
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5160 struct proto_user_opt *puo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5161 ret->protocol = PROTO_OSCAR;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
5162 ret->options = OPT_PROTO_MAIL_CHECK | OPT_PROTO_BUDDY_ICON | OPT_PROTO_IM_IMAGE;
3858
751d9680f60e [gaim-migrate @ 4010]
Luke Schierer <lschiere@pidgin.im>
parents: 3850
diff changeset
5163 ret->name = g_strdup("AIM/ICQ");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5164 ret->list_icon = oscar_list_icon;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5165 ret->away_states = oscar_away_states;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5166 ret->actions = oscar_actions;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5167 ret->do_action = oscar_do_action;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5168 ret->buddy_menu = oscar_buddy_menu;
3456
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
5169 ret->edit_buddy_menu = oscar_edit_buddy_menu;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5170 ret->login = oscar_login;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5171 ret->close = oscar_close;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5172 ret->send_im = oscar_send_im;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5173 ret->send_typing = oscar_send_typing;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5174 ret->set_info = oscar_set_info;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5175 ret->get_info = oscar_get_info;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5176 ret->set_away = oscar_set_away;
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
5177 ret->get_away = oscar_get_away;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5178 ret->set_dir = oscar_set_dir;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5179 ret->get_dir = NULL; /* Oscar really doesn't have this */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5180 ret->dir_search = oscar_dir_search;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5181 ret->set_idle = oscar_set_idle;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5182 ret->change_passwd = oscar_change_passwd;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5183 ret->add_buddy = oscar_add_buddy;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5184 ret->add_buddies = oscar_add_buddies;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5185 #ifndef NOSSI
3140
168c622ed90d [gaim-migrate @ 3155]
Rob Flynn <gaim@robflynn.com>
parents: 3139
diff changeset
5186 ret->group_buddy = oscar_move_buddy;
3348
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3316
diff changeset
5187 ret->rename_group = oscar_rename_group;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5188 #endif
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
5189 ret->file_transfer_cancel = oscar_file_transfer_cancel;
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
5190 ret->file_transfer_in = oscar_file_transfer_in;
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
5191 ret->file_transfer_out = oscar_file_transfer_out;
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
5192 ret->file_transfer_data_chunk = oscar_file_transfer_data_chunk;
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
5193 ret->file_transfer_nextfile = oscar_file_transfer_nextfile;
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
5194 ret->file_transfer_done = oscar_file_transfer_done;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5195 ret->remove_buddy = oscar_remove_buddy;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5196 ret->remove_buddies = oscar_remove_buddies;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5197 ret->add_permit = oscar_add_permit;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5198 ret->add_deny = oscar_add_deny;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5199 ret->rem_permit = oscar_rem_permit;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5200 ret->rem_deny = oscar_rem_deny;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5201 ret->set_permit_deny = oscar_set_permit_deny;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5202 ret->warn = oscar_warn;
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
5203 ret->chat_info = oscar_chat_info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5204 ret->join_chat = oscar_join_chat;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5205 ret->chat_invite = oscar_chat_invite;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5206 ret->chat_leave = oscar_chat_leave;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5207 ret->chat_whisper = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5208 ret->chat_send = oscar_chat_send;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5209 ret->keepalive = oscar_keepalive;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5210 ret->convo_closed = oscar_convo_closed;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5211
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5212 puo = g_new0(struct proto_user_opt, 1);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5213 puo->label = g_strdup("Auth Host:");
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5214 puo->def = g_strdup("login.oscar.aol.com");
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5215 puo->pos = USEROPT_AUTH;
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5216 ret->user_opts = g_list_append(ret->user_opts, puo);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5217
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5218 puo = g_new0(struct proto_user_opt, 1);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5219 puo->label = g_strdup("Auth Port:");
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5220 puo->def = g_strdup("5190");
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5221 puo->pos = USEROPT_AUTHPORT;
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5222 ret->user_opts = g_list_append(ret->user_opts, puo);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5223
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5224 my_protocol = ret;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5225 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5226
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5227 #ifndef STATIC
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5228
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
5229 G_MODULE_EXPORT void gaim_prpl_init(struct prpl *prpl)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5230 {
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5231 oscar_init(prpl);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
5232 prpl->plug->desc.api_version = PLUGIN_API_VERSION;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5233 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5234
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5235 #endif

mercurial