src/protocols/oscar/oscar.c

Thu, 07 Nov 2002 02:25:12 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Thu, 07 Nov 2002 02:25:12 +0000
changeset 3912
334ebe7e5f93
parent 3867
0e747b4295cb
child 3952
d13e1fde68d8
permissions
-rw-r--r--

[gaim-migrate @ 4071]
Little touchups in the "admin" family. Not much has changed, but I
moved some functions around because I'm weird. (This is the stuff in
"protocol actions" for oscar accounts.)

Some of the dialogs should look a little more, I dunno, uniform or
something.

Change password, format screenname, and change current registered screen
name should give you some slightly userfriendly error messages now.

Also "confirm account" will pop up that little message that says you
should be expecting an email... I think that was one of those brain
mistakes, where something was backwards, or something.

Uh, so let me know if you see any problems with any of that.

Why did I work on this instead of ssi? I don't know. This is funner, I
guess. I'll get to ssi eventually...

Meow.

3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
1
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2 /*
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3 * gaim
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5 * Some code copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6 * libfaim code copyright 1998, 1999 Adam Fritzler <afritz@auk.cx>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
9 * 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
10 * the Free Software Foundation; either version 2 of the License, or
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
11 * (at your option) any later version.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
12 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
16 * GNU General Public License for more details.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
17 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
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
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
24 #ifdef HAVE_CONFIG_H
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
25 #include <config.h>
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
26 #endif
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
27
3664
c192fe7bafd1 [gaim-migrate @ 3793]
Luke Schierer <lschiere@pidgin.im>
parents: 3660
diff changeset
28 #include <sys/types.h>
c192fe7bafd1 [gaim-migrate @ 3793]
Luke Schierer <lschiere@pidgin.im>
parents: 3660
diff changeset
29 /*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
30
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
31 #ifndef _WIN32
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
32 #include <netdb.h>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
33 #include <netinet/in.h>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
34 #include <arpa/inet.h>
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
35 #include <sys/socket.h>
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
36 #include <unistd.h>
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
37 #endif
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
38
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
39 #include <errno.h>
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
40 #include <ctype.h>
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
41 #include <string.h>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
42 #include <stdlib.h>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
43 #include <stdio.h>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
44 #include <time.h>
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
45 #include <sys/stat.h>
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
46 #include <signal.h>
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
47
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
48 #include "multi.h"
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
49 #include "prpl.h"
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
50 #include "gaim.h"
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
51 #include "aim.h"
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
52 #include "proxy.h"
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
53
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
54 #ifdef _WIN32
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
55 #include "win32dep.h"
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
56 #endif
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
57
3490
48976e417e7a [gaim-migrate @ 3547]
Rob Flynn <gaim@robflynn.com>
parents: 3466
diff changeset
58 #include "pixmaps/protocols/oscar/ab.xpm"
48976e417e7a [gaim-migrate @ 3547]
Rob Flynn <gaim@robflynn.com>
parents: 3466
diff changeset
59 #include "pixmaps/protocols/oscar/admin_icon.xpm"
48976e417e7a [gaim-migrate @ 3547]
Rob Flynn <gaim@robflynn.com>
parents: 3466
diff changeset
60 #include "pixmaps/protocols/oscar/aol_icon.xpm"
48976e417e7a [gaim-migrate @ 3547]
Rob Flynn <gaim@robflynn.com>
parents: 3466
diff changeset
61 #include "pixmaps/protocols/oscar/away_icon.xpm"
48976e417e7a [gaim-migrate @ 3547]
Rob Flynn <gaim@robflynn.com>
parents: 3466
diff changeset
62 #include "pixmaps/protocols/oscar/dt_icon.xpm"
48976e417e7a [gaim-migrate @ 3547]
Rob Flynn <gaim@robflynn.com>
parents: 3466
diff changeset
63 #include "pixmaps/protocols/oscar/free_icon.xpm"
48976e417e7a [gaim-migrate @ 3547]
Rob Flynn <gaim@robflynn.com>
parents: 3466
diff changeset
64 #include "pixmaps/protocols/oscar/wireless_icon.xpm"
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
65
3579
a2ae3e1d5cb4 [gaim-migrate @ 3681]
Sean Egan <seanegan@pidgin.im>
parents: 3574
diff changeset
66 #include "pixmaps/protocols/icq/gnomeicu-online.xpm"
a2ae3e1d5cb4 [gaim-migrate @ 3681]
Sean Egan <seanegan@pidgin.im>
parents: 3574
diff changeset
67 #include "pixmaps/protocols/icq/gnomeicu-offline.xpm"
a2ae3e1d5cb4 [gaim-migrate @ 3681]
Sean Egan <seanegan@pidgin.im>
parents: 3574
diff changeset
68 #include "pixmaps/protocols/icq/gnomeicu-away.xpm"
a2ae3e1d5cb4 [gaim-migrate @ 3681]
Sean Egan <seanegan@pidgin.im>
parents: 3574
diff changeset
69 #include "pixmaps/protocols/icq/gnomeicu-dnd.xpm"
a2ae3e1d5cb4 [gaim-migrate @ 3681]
Sean Egan <seanegan@pidgin.im>
parents: 3574
diff changeset
70 #include "pixmaps/protocols/icq/gnomeicu-na.xpm"
a2ae3e1d5cb4 [gaim-migrate @ 3681]
Sean Egan <seanegan@pidgin.im>
parents: 3574
diff changeset
71 #include "pixmaps/protocols/icq/gnomeicu-occ.xpm"
a2ae3e1d5cb4 [gaim-migrate @ 3681]
Sean Egan <seanegan@pidgin.im>
parents: 3574
diff changeset
72 #include "pixmaps/protocols/icq/gnomeicu-ffc.xpm"
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
73
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
74 /* constants to identify proto_opts */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
75 #define USEROPT_AUTH 0
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
76 #define USEROPT_AUTHPORT 1
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
77
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
78 #define UC_AOL 0x02
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
79 #define UC_ADMIN 0x04
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
80 #define UC_UNCONFIRMED 0x08
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
81 #define UC_NORMAL 0x10
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
82 #define UC_AB 0x20
3079
e55c9a9cc4fc [gaim-migrate @ 3093]
Mark Doliner <markdoliner@pidgin.im>
parents: 3074
diff changeset
83 #define UC_WIRELESS 0x40
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
84
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
85 #define AIMHASHDATA "http://gaim.sourceforge.net/aim_data.php3"
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
86
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
87 /* For win32 compatability */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
88 G_MODULE_IMPORT GSList *connections;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
89 G_MODULE_IMPORT int report_idle;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
90
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
91 static int caps_aim = AIM_CAPS_CHAT | AIM_CAPS_BUDDYICON |
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
92 AIM_CAPS_IMIMAGE | AIM_CAPS_SENDFILE;
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
93
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
94 /* 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
95 * Winicq doesn't mind. */
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
96 static int caps_icq = AIM_CAPS_CHAT | AIM_CAPS_BUDDYICON | AIM_CAPS_IMIMAGE;
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
97 /* static int caps_icq = AIM_CAPS_ICQ; */
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
98 /* What does AIM_CAPS_ICQ actually mean? -SE */
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
99
2308
ea03e9136092 [gaim-migrate @ 2318]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2305
diff changeset
100 static fu8_t gaim_features[] = {0x01, 0x01, 0x01, 0x02};
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
101
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
102 struct oscar_data {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
103 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
104 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
105
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
106 guint cnpa;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
107 guint paspa;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
108 guint emlpa;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
109
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
110 GSList *create_rooms;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
111
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
112 gboolean conf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
113 gboolean reqemail;
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
114 gboolean setemail;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
115 char *email;
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
116 gboolean setnick;
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
117 char *newsn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
118 gboolean chpass;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
119 char *oldp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
120 char *newp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
121
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
122 GSList *oscar_chats;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
123 GSList *direct_ims;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
124 GSList *file_transfers;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
125 GSList *hasicons;
3600
776215788f43 [gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents: 3596
diff changeset
126 GHashTable *supports_tn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
127
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
128 gboolean killme;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
129 gboolean icq;
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
130 GSList *evilhack;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
131
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
132 struct {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
133 guint maxbuddies; /* max users you can watch */
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
134 guint maxwatchers; /* max users who can watch you */
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
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
199 struct channel4_data {
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
200 struct gaim_connection *gc;
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
201 gchar *uin;
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
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
205 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
206 GSList *d = od->direct_ims;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
207 char *n = g_strdup(normalize(who));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
208 struct direct_im *m = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
209
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
210 while (d) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
211 m = (struct direct_im *)d->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
212 if (!strcmp(n, normalize(m->name)))
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
213 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
214 m = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
215 d = d->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
216 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
217
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
218 g_free(n);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
219 return m;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
220 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
221
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
222 static char *extract_name(const char *name) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
223 char *tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
224 int i, j;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
225 char *x = strchr(name, '-');
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
226 if (!x) return NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
227 x = strchr(++x, '-');
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
228 if (!x) return NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
229 tmp = g_strdup(++x);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
230
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
231 for (i = 0, j = 0; x[i]; i++) {
2361
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
232 char hex[3];
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
233 if (x[i] != '%') {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
234 tmp[j++] = x[i];
2361
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
235 continue;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
236 }
2361
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
237 strncpy(hex, x + ++i, 2); hex[2] = 0;
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
238 i++;
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
239 tmp[j++] = strtol(hex, NULL, 16);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
240 }
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 tmp[j] = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
243 return tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
244 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
245
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
246 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
247 GSList *g = ((struct oscar_data *)gc->proto_data)->oscar_chats;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
248 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
249
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
250 while (g) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
251 c = (struct chat_connection *)g->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
252 if (c->id == id)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
253 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
254 g = g->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
255 c = NULL;
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
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
258 return c;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
259 }
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 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
262 aim_conn_t *conn) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
263 GSList *g = ((struct oscar_data *)gc->proto_data)->oscar_chats;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
264 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
265
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
266 while (g) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
267 c = (struct chat_connection *)g->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
268 if (c->conn == conn)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
269 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
270 g = g->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
271 c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
272 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
273
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
274 return c;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
275 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
276
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
277 /* XXX there must be a better way than this.... -- wtm */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
278 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
279 aim_conn_t *conn) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
280 GSList *g = ((struct oscar_data *)gc->proto_data)->file_transfers;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
281 struct oscar_file_transfer *f = NULL;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
282
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
283 while (g) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
284 f = (struct oscar_file_transfer *)g->data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
285 if (f->conn == conn)
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
286 break;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
287 g = g->next;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
288 f = NULL;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
289 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
290
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
291 return f;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
292 }
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 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
295 struct file_transfer *xfer) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
296 GSList *g = ((struct oscar_data *)gc->proto_data)->file_transfers;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
297 struct oscar_file_transfer *f = NULL;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
298
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
299 while (g) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
300 f = (struct oscar_file_transfer *)g->data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
301 if (f->xfer == xfer)
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
302 break;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
303 g = g->next;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
304 f = NULL;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
305 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
306
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
307 return f;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
308 }
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 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
311 const char *cookie) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
312 GSList *g = ((struct oscar_data *)gc->proto_data)->file_transfers;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
313 struct oscar_file_transfer *f = NULL;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
314
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
315 while (g) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
316 f = (struct oscar_file_transfer *)g->data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
317 if (!strncmp(f->cookie, cookie, 8))
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
318 break;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
319 g = g->next;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
320 f = NULL;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
321 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
322
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
323 return f;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
324 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
325
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
326 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
327 static int gaim_parse_login (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
328 static int gaim_handle_redirect (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
329 static int gaim_info_change (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
330 static int gaim_account_confirm (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
331 static int gaim_parse_oncoming (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
332 static int gaim_parse_offgoing (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
333 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
334 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
335 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
336 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
337 static int gaim_parse_motd (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
338 static int gaim_chatnav_info (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
339 static int gaim_chat_join (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
340 static int gaim_chat_leave (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
341 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
342 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
343 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
344 static int gaim_parse_msgack (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
345 static int gaim_parse_ratechange (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
346 static int gaim_parse_evilnotify (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
347 static int gaim_parse_searcherror(aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
348 static int gaim_parse_searchreply(aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
349 static int gaim_bosrights (aim_session_t *, aim_frame_t *, ...);
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
350 static int conninitdone_bos (aim_session_t *, aim_frame_t *, ...);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
351 static int conninitdone_admin (aim_session_t *, aim_frame_t *, ...);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
352 static int conninitdone_chat (aim_session_t *, aim_frame_t *, ...);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
353 static int conninitdone_chatnav (aim_session_t *, aim_frame_t *, ...);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
354 static int conninitdone_email (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_msgerr (aim_session_t *, aim_frame_t *, ...);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
356 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
357 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
358 static int gaim_parse_buddyrights(aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
359 static int gaim_parse_locerr (aim_session_t *, aim_frame_t *, ...);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
360 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
361 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
362 static int gaim_memrequest (aim_session_t *, aim_frame_t *, ...);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
363 static int gaim_selfinfo (aim_session_t *, aim_frame_t *, ...);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
364 static int gaim_offlinemsg (aim_session_t *, aim_frame_t *, ...);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
365 static int gaim_offlinemsgdone (aim_session_t *, aim_frame_t *, ...);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
366 static int gaim_simpleinfo (aim_session_t *, aim_frame_t *, ...);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
367 static int gaim_popup (aim_session_t *, aim_frame_t *, ...);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
368 static int gaim_ssi_parserights (aim_session_t *, aim_frame_t *, ...);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
369 static int gaim_ssi_parselist (aim_session_t *, aim_frame_t *, ...);
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
370
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
371 static int gaim_directim_initiate(aim_session_t *, aim_frame_t *, ...);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
372 static int gaim_directim_incoming(aim_session_t *, aim_frame_t *, ...);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
373 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
374 static int gaim_update_ui (aim_session_t *, aim_frame_t *, ...);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
375
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
376 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
377 static void oscar_file_transfer_disconnect(aim_session_t *,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
378 aim_conn_t *);
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
379 static void oscar_file_transfer_cancel(struct gaim_connection *,
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
380 struct file_transfer *);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
381 static int oscar_sendfile_request(aim_session_t *sess,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
382 struct oscar_file_transfer *oft);
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
383 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
384
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
385 static char *msgerrreason[] = {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
386 "Invalid error",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
387 "Invalid SNAC",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
388 "Rate to host",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
389 "Rate to client",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
390 "Not logged in",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
391 "Service unavailable",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
392 "Service not defined",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
393 "Obsolete SNAC",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
394 "Not supported by host",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
395 "Not supported by client",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
396 "Refused by client",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
397 "Reply too big",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
398 "Responses lost",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
399 "Request denied",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
400 "Busted SNAC payload",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
401 "Insufficient rights",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
402 "In local permit/deny",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
403 "Too evil (sender)",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
404 "Too evil (receiver)",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
405 "User temporarily unavailable",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
406 "No match",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
407 "List overflow",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
408 "Request ambiguous",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
409 "Queue full",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
410 "Not while on AOL"
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
411 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
412 static int msgerrreasonlen = 25;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
413
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
414 static void oscar_file_transfer_disconnect(aim_session_t *sess,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
415 aim_conn_t *conn) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
416 struct gaim_connection *gc = sess->aux_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
417 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
418 struct oscar_file_transfer *oft = find_oft_by_conn(gc,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
419 conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
420
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
421 od->file_transfers = g_slist_remove(od->file_transfers, oft);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
422
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
423 if (oft->watcher) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
424 gaim_input_remove(oft->watcher);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
425 oft->watcher = 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
426 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
427
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
428 aim_conn_kill(sess, &conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
429
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
430 g_free(oft->sn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
431 g_free(oft);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
432 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
433
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
434 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
435 struct gaim_connection *gc = sess->aux_data;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
436 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
437 struct conversation *cnv;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
438 struct direct_im *dim;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
439 char *sn;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
440 char buf[256];
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
441
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
442 sn = g_strdup(aim_directim_getsn(conn));
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
443
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
444 debug_printf("%s disconnected Direct IM.\n", sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
445
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
446 dim = find_direct_im(od, sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
447 od->direct_ims = g_slist_remove(od->direct_ims, dim);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
448 gaim_input_remove(dim->watcher);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
449
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
450 if (dim->connected)
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
451 g_snprintf(buf, sizeof buf, _("Direct IM with %s closed"), sn);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
452 else
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
453 g_snprintf(buf, sizeof buf, _("Direct IM with %s failed"), sn);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
454
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
455 if ((cnv = find_conversation(sn)))
2856
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2833
diff changeset
456 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
457 update_progress(cnv, 100);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
458
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
459 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
460 g_free(sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
461
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
462 return;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
463 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
464
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
465 static void oscar_callback(gpointer data, gint source,
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
466 GaimInputCondition condition) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
467 aim_conn_t *conn = (aim_conn_t *)data;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
468 aim_session_t *sess = aim_conn_getsess(conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
469 struct gaim_connection *gc = sess ? sess->aux_data : NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
470 struct oscar_data *odata;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
471
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
472 if (!gc) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
473 /* gc is null. we return, else we seg SIGSEG on next line. */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
474 debug_printf("oscar callback for closed connection (1).\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
475 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
476 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
477
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
478 odata = (struct oscar_data *)gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
479
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
480 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
481 /* oh boy. this is probably bad. i guess the only thing we
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
482 * can really do is return? */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
483 debug_printf("oscar callback for closed connection (2).\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
484 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
485 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
486
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
487 if (condition & GAIM_INPUT_READ) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
488 if (conn->type == AIM_CONN_TYPE_RENDEZVOUS_OUT) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
489 debug_printf("got information on rendezvous\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
490 if (aim_handlerendconnect(odata->sess, conn) < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
491 debug_printf(_("connection error (rend)\n"));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
492 aim_conn_kill(odata->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
493 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
494 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
495 if (aim_get_command(odata->sess, conn) >= 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
496 aim_rxdispatch(odata->sess);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
497 if (odata->killme)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
498 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
499 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
500 if ((conn->type == AIM_CONN_TYPE_BOS) ||
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
501 !(aim_getconn_type(odata->sess, AIM_CONN_TYPE_BOS))) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
502 debug_printf(_("major connection error\n"));
3074
b6510843df8f [gaim-migrate @ 3088]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3068
diff changeset
503 hide_login_progress_error(gc, _("Disconnected."));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
504 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
505 } else if (conn->type == AIM_CONN_TYPE_CHAT) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
506 struct chat_connection *c = find_oscar_chat_by_conn(gc, conn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
507 char buf[BUF_LONG];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
508 debug_printf("disconnected from chat room %s\n", c->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
509 c->conn = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
510 if (c->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
511 gaim_input_remove(c->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
512 c->inpa = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
513 c->fd = -1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
514 aim_conn_kill(odata->sess, &conn);
3574
b4839ec94817 [gaim-migrate @ 3673]
Luke Schierer <lschiere@pidgin.im>
parents: 3572
diff changeset
515 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
516 do_error_dialog(buf, NULL, GAIM_ERROR);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
517 } else if (conn->type == AIM_CONN_TYPE_CHATNAV) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
518 if (odata->cnpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
519 gaim_input_remove(odata->cnpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
520 odata->cnpa = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
521 debug_printf("removing chatnav input watcher\n");
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
522 while (odata->create_rooms) {
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
523 struct create_room *cr = odata->create_rooms->data;
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
524 g_free(cr->name);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
525 odata->create_rooms =
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
526 g_slist_remove(odata->create_rooms, cr);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
527 g_free(cr);
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
528 do_error_dialog(_("Chat is currently unavailable"), NULL, GAIM_ERROR);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
529 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
530 aim_conn_kill(odata->sess, &conn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
531 } else if (conn->type == AIM_CONN_TYPE_AUTH) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
532 if (odata->paspa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
533 gaim_input_remove(odata->paspa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
534 odata->paspa = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
535 debug_printf("removing authconn input watcher\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
536 aim_conn_kill(odata->sess, &conn);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
537 } else if (conn->type == AIM_CONN_TYPE_EMAIL) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
538 if (odata->emlpa > 0)
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
539 gaim_input_remove(odata->emlpa);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
540 odata->emlpa = 0;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
541 debug_printf("removing email input watcher\n");
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
542 aim_conn_kill(odata->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
543 } else if (conn->type == AIM_CONN_TYPE_RENDEZVOUS) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
544 if (conn->subtype == AIM_CONN_SUBTYPE_OFT_DIRECTIM)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
545 gaim_directim_disconnect(odata->sess, conn);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
546 else if (conn->subtype == AIM_CONN_SUBTYPE_OFT_SENDFILE) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
547 struct oscar_file_transfer *oft = find_oft_by_conn(gc, conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
548 if (oft) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
549 transfer_abort(oft->xfer, _("Buddy canceled transfer"));
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
550 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
551 oscar_file_transfer_disconnect(odata->sess, conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
552 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
553 else {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
554 debug_printf("No handler for rendezvous disconnect (%d).\n",
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
555 source);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
556 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
557 aim_conn_kill(odata->sess, &conn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
558 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
559 debug_printf("holy crap! generic connection error! %d\n",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
560 conn->type);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
561 aim_conn_kill(odata->sess, &conn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
562 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
563 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
564 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
565 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
566 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
567
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
568 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
569 char *s = g_strdup_vprintf(format, va);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
570 char buf[256];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
571 char *t;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
572 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
573
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
574 g_snprintf(buf, sizeof(buf), "%s %d: ", gc->username, level);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
575 t = g_strconcat(buf, s, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
576 debug_printf(t);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
577 if (t[strlen(t)-1] != '\n')
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
578 debug_printf("\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
579 g_free(t);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
580 g_free(s);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
581 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
582
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
583 static void oscar_login_connect(gpointer data, gint source, GaimInputCondition cond)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
584 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
585 struct gaim_connection *gc = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
586 struct oscar_data *odata;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
587 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
588 aim_conn_t *conn;
2086
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 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
591 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
592 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
593 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
594
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
595 odata = gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
596 sess = odata->sess;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
597 conn = aim_getconn_type_all(sess, AIM_CONN_TYPE_AUTH);
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 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
600 hide_login_progress(gc, _("Couldn't connect to host"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
601 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
602 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
603 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
604
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
605 aim_conn_completeconnect(sess, conn);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
606 gc->inpa = gaim_input_add(conn->fd, GAIM_INPUT_READ,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
607 oscar_callback, conn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
608 debug_printf(_("Password sent, waiting for response\n"));
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
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
611 static void oscar_login(struct aim_user *user) {
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 char buf[256];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
615 struct gaim_connection *gc = new_gaim_conn(user);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
616 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
617
2589
9f90783f8bdd [gaim-migrate @ 2602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2507
diff changeset
618 if (isdigit(*user->username)) {
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
619 odata->icq = TRUE;
2589
9f90783f8bdd [gaim-migrate @ 2602]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2507
diff changeset
620 /* 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
621 gc->protocol = PROTO_ICQ;
3064
d20bc95cf928 [gaim-migrate @ 3078]
Sean Egan <seanegan@pidgin.im>
parents: 3063
diff changeset
622 gc->password[8] = 0;
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
623 } else {
2590
fecf2ce04325 [gaim-migrate @ 2603]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2589
diff changeset
624 gc->protocol = PROTO_TOC;
2918
f4efca1781b7 [gaim-migrate @ 2931]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2916
diff changeset
625 gc->flags |= OPT_CONN_HTML;
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
626 }
3600
776215788f43 [gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents: 3596
diff changeset
627 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
628
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
629 sess = g_new0(aim_session_t, 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
630
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
631 aim_session_init(sess, AIM_SESS_FLAGS_NONBLOCKCONNECT, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
632 aim_setdebuggingcb(sess, oscar_debug);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
633
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
634 /* 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
635 * see if things need to be sent. */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
636 aim_tx_setenqueue(sess, AIM_TX_IMMEDIATE, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
637 odata->sess = sess;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
638 sess->aux_data = gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
639
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
640 conn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
641 if (conn == NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
642 debug_printf(_("internal connection error\n"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
643 hide_login_progress(gc, _("Unable to login to AIM"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
644 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
645 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
646 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
647
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
648 g_snprintf(buf, sizeof(buf), _("Signon: %s"), gc->username);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
649 set_login_progress(gc, 2, buf);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
650
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
651 aim_conn_addhandler(sess, conn, 0x0017, 0x0007, gaim_parse_login, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
652 aim_conn_addhandler(sess, conn, 0x0017, 0x0003, gaim_parse_auth_resp, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
653
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
654 conn->status |= AIM_CONN_STATUS_INPROGRESS;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
655 conn->fd = proxy_connect(user->proto_opt[USEROPT_AUTH][0] ?
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
656 user->proto_opt[USEROPT_AUTH] : FAIM_LOGIN_SERVER,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
657 user->proto_opt[USEROPT_AUTHPORT][0] ?
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
658 atoi(user->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
659 oscar_login_connect, gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
660 if (conn->fd < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
661 hide_login_progress(gc, _("Couldn't connect to host"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
662 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
663 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
664 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
665 aim_request_login(sess, conn, gc->username);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
666 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
667
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
668 static void oscar_close(struct gaim_connection *gc) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
669 struct oscar_data *odata = (struct oscar_data *)gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
670
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
671 while (odata->oscar_chats) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
672 struct chat_connection *n = odata->oscar_chats->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
673 if (n->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
674 gaim_input_remove(n->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
675 g_free(n->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
676 g_free(n->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
677 odata->oscar_chats = g_slist_remove(odata->oscar_chats, n);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
678 g_free(n);
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 while (odata->direct_ims) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
681 struct direct_im *n = odata->direct_ims->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
682 if (n->watcher > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
683 gaim_input_remove(n->watcher);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
684 odata->direct_ims = g_slist_remove(odata->direct_ims, n);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
685 g_free(n);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
686 }
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
687 while (odata->file_transfers) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
688 struct oscar_file_transfer *n = odata->file_transfers->data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
689 if (n->watcher > 0)
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
690 gaim_input_remove(n->watcher);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
691 odata->file_transfers = g_slist_remove(odata->file_transfers, n);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
692 g_free(n);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
693 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
694 while (odata->hasicons) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
695 struct icon_req *n = odata->hasicons->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
696 g_free(n->user);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
697 odata->hasicons = g_slist_remove(odata->hasicons, n);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
698 g_free(n);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
699 }
3600
776215788f43 [gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents: 3596
diff changeset
700 g_hash_table_destroy(odata->supports_tn);
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
701 while (odata->evilhack) {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
702 g_free(odata->evilhack->data);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
703 odata->evilhack = g_slist_remove(odata->evilhack, odata->evilhack->data);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
704 }
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
705 while (odata->create_rooms) {
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
706 struct create_room *cr = odata->create_rooms->data;
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
707 g_free(cr->name);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
708 odata->create_rooms = g_slist_remove(odata->create_rooms, cr);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
709 g_free(cr);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
710 }
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
711 if (odata->email)
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
712 g_free(odata->email);
2754
1deb656ee517 [gaim-migrate @ 2767]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2742
diff changeset
713 if (odata->newp)
1deb656ee517 [gaim-migrate @ 2767]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2742
diff changeset
714 g_free(odata->newp);
1deb656ee517 [gaim-migrate @ 2767]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2742
diff changeset
715 if (odata->oldp)
1deb656ee517 [gaim-migrate @ 2767]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2742
diff changeset
716 g_free(odata->oldp);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
717 if (gc->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
718 gaim_input_remove(gc->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
719 if (odata->cnpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
720 gaim_input_remove(odata->cnpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
721 if (odata->paspa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
722 gaim_input_remove(odata->paspa);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
723 if (odata->emlpa > 0)
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
724 gaim_input_remove(odata->emlpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
725 aim_session_kill(odata->sess);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
726 g_free(odata->sess);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
727 odata->sess = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
728 g_free(gc->proto_data);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
729 gc->proto_data = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
730 debug_printf(_("Signed off.\n"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
731 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
732
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
733 static void oscar_bos_connect(gpointer data, gint source, GaimInputCondition cond) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
734 struct gaim_connection *gc = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
735 struct oscar_data *odata;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
736 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
737 aim_conn_t *bosconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
738
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
739 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
740 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
741 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
742 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
743
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
744 odata = gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
745 sess = odata->sess;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
746 bosconn = odata->conn;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
747
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
748 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
749 hide_login_progress(gc, _("Could Not Connect"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
750 signoff(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
751 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
752 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
753
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
754 aim_conn_completeconnect(sess, bosconn);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
755 gc->inpa = gaim_input_add(bosconn->fd, GAIM_INPUT_READ,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
756 oscar_callback, bosconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
757 set_login_progress(gc, 4, _("Connection established, cookie sent"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
758 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
759
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
760 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
761 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
762
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
763 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
764 1);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
765
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
766 oft->type = OFT_SENDFILE_OUT;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
767 oft->sn = g_strdup(destsn);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
768
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
769 od->file_transfers = g_slist_append(od->file_transfers, oft);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
770
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
771 oft->xfer = transfer_out_add(gc, oft->sn);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
772 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
773
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
774 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
775 va_list ap;
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
776 struct aim_authresp_info *info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
777 int i; char *host; int port;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
778 struct aim_user *user;
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
779 aim_conn_t *bosconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
780
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
781 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
782 struct oscar_data *od = gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
783 user = gc->user;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
784 port = user->proto_opt[USEROPT_AUTHPORT][0] ?
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
785 atoi(user->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
786
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
787 va_start(ap, fr);
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
788 info = va_arg(ap, struct aim_authresp_info *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
789 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
790
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
791 debug_printf("inside auth_resp (Screen name: %s)\n", info->sn);
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
792
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
793 if (info->errorcode || !info->bosip || !info->cookie) {
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
794 switch (info->errorcode) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
795 case 0x05:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
796 /* Incorrect nick/password */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
797 hide_login_progress(gc, _("Incorrect nickname or password."));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
798 plugin_event(event_error, (void *)980, 0, 0, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
799 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
800 case 0x11:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
801 /* Suspended account */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
802 hide_login_progress(gc, _("Your account is currently suspended."));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
803 break;
3498
3f6ce04ea3ad [gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents: 3490
diff changeset
804 case 0x14:
3f6ce04ea3ad [gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents: 3490
diff changeset
805 /* service temporarily unavailable */
3f6ce04ea3ad [gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents: 3490
diff changeset
806 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
807 break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
808 case 0x18:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
809 /* connecting too frequently */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
810 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
811 plugin_event(event_error, (void *)983, 0, 0, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
812 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
813 case 0x1c:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
814 /* client too old */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
815 hide_login_progress(gc, _("The client version you are using is too old. Please upgrade at " WEBSITE));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
816 plugin_event(event_error, (void *)989, 0, 0, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
817 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
818 default:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
819 hide_login_progress(gc, _("Authentication Failed"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
820 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
821 }
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
822 debug_printf("Login Error Code 0x%04x\n", info->errorcode);
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
823 debug_printf("Error URL: %s\n", info->errorurl);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
824 od->killme = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
825 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
826 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
827
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
828
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
829 debug_printf("Reg status: %d\n", info->regstatus);
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
830 if (info->email) {
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
831 debug_printf("Email: %s\n", info->email);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
832 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
833 debug_printf("Email is NULL\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
834 }
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
835 debug_printf("BOSIP: %s\n", info->bosip);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
836 debug_printf("Closing auth connection...\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
837 aim_conn_kill(sess, &fr->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
838
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
839 bosconn = aim_newconn(sess, AIM_CONN_TYPE_BOS, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
840 if (bosconn == NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
841 hide_login_progress(gc, _("Internal Error"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
842 od->killme = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
843 return 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
844 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
845
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
846 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
847 aim_conn_addhandler(sess, bosconn, 0x0009, 0x0003, gaim_bosrights, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
848 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
849 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
850 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
851 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
852 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
853 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
854 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
855 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
856 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
857 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
858 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
859 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
860 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
861 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
862 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
863 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
864 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
865 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
866 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
867 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
868 aim_conn_addhandler(sess, bosconn, 0x0001, 0x0001, gaim_parse_genericerr, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
869 aim_conn_addhandler(sess, bosconn, 0x0003, 0x0001, gaim_parse_genericerr, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
870 aim_conn_addhandler(sess, bosconn, 0x0009, 0x0001, gaim_parse_genericerr, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
871 aim_conn_addhandler(sess, bosconn, 0x0001, 0x001f, gaim_memrequest, 0);
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
872 aim_conn_addhandler(sess, bosconn, 0x0001, 0x000f, gaim_selfinfo, 0);
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
873 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
874 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
875 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_POP, 0x0002, gaim_popup, 0);
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
876 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_SIMPLEINFO, gaim_simpleinfo, 0);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
877 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
878 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
879 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_NOLIST, gaim_ssi_parselist, 0);
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
880 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
881
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
882 ((struct oscar_data *)gc->proto_data)->conn = bosconn;
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
883 for (i = 0; i < (int)strlen(info->bosip); i++) {
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
884 if (info->bosip[i] == ':') {
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
885 port = atoi(&(info->bosip[i+1]));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
886 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
887 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
888 }
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
889 host = g_strndup(info->bosip, i);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
890 bosconn->status |= AIM_CONN_STATUS_INPROGRESS;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
891 bosconn->fd = proxy_connect(host, port, oscar_bos_connect, gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
892 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
893 if (bosconn->fd < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
894 hide_login_progress(gc, _("Could Not Connect"));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
895 od->killme = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
896 return 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
897 }
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
898 aim_sendcookie(sess, bosconn, info->cookie);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
899 gaim_input_remove(gc->inpa);
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
900
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
901 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
902 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
903
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
904 struct pieceofcrap {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
905 struct gaim_connection *gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
906 unsigned long offset;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
907 unsigned long len;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
908 char *modname;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
909 int fd;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
910 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
911 unsigned int inpa;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
912 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
913
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
914 static void damn_you(gpointer data, gint source, GaimInputCondition c)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
915 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
916 struct pieceofcrap *pos = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
917 struct oscar_data *od = pos->gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
918 char in = '\0';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
919 int x = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
920 unsigned char m[17];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
921
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
922 while (read(pos->fd, &in, 1) == 1) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
923 if (in == '\n')
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
924 x++;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
925 else if (in != '\r')
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
926 x = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
927 if (x == 2)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
928 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
929 in = '\0';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
930 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
931 if (in != '\n') {
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
932 do_error_dialog(_("Gaim was Unable to get a valid AIM login hash."),
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
933 _("You may be disconnected shortly. You may want to use TOC until "
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
934 "this is fixed. Check " WEBSITE " for updates."), GAIM_WARNING);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
935 gaim_input_remove(pos->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
936 close(pos->fd);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
937 g_free(pos);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
938 return;
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 read(pos->fd, m, 16);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
941 m[16] = '\0';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
942 debug_printf("Sending hash: ");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
943 for (x = 0; x < 16; x++)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
944 debug_printf("%02x ", (unsigned char)m[x]);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
945 debug_printf("\n");
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
946 gaim_input_remove(pos->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
947 close(pos->fd);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
948 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
949 g_free(pos);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
950 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
951
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
952 static void straight_to_hell(gpointer data, gint source, GaimInputCondition cond) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
953 struct pieceofcrap *pos = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
954 char buf[BUF_LONG];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
955
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
956 if (source < 0) {
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
957 do_error_dialog(_("Gaim was Unable to get a valid AIM login hash."),
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
958 _("You may be disconnected shortly. You may want to use TOC until "
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
959 "this is fixed. Check " WEBSITE " for updates."), GAIM_WARNING);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
960 if (pos->modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
961 g_free(pos->modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
962 g_free(pos);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
963 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
964 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
965
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
966 g_snprintf(buf, sizeof(buf), "GET " AIMHASHDATA
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
967 "?offset=%ld&len=%ld&modname=%s HTTP/1.0\n\n",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
968 pos->offset, pos->len, pos->modname ? pos->modname : "");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
969 write(pos->fd, buf, strlen(buf));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
970 if (pos->modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
971 g_free(pos->modname);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
972 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
973 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
974 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
975
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
976 /* size of icbmui.ocm, the largest module in AIM 3.5 */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
977 #define AIM_MAX_FILE_SIZE 98304
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
978
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
979 int gaim_memrequest(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
980 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
981 struct pieceofcrap *pos;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
982 fu32_t offset, len;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
983 char *modname;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
984 int fd;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
985
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
986 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
987 offset = (fu32_t)va_arg(ap, unsigned long);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
988 len = (fu32_t)va_arg(ap, unsigned long);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
989 modname = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
990 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
991
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
992 debug_printf("offset: %d, len: %d, file: %s\n", offset, len, modname ? modname : "aim.exe");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
993 if (len == 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
994 debug_printf("len is 0, hashing NULL\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
995 aim_sendmemblock(sess, fr->conn, offset, len, NULL,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
996 AIM_SENDMEMBLOCK_FLAG_ISREQUEST);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
997 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
998 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
999 /* 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
1000 if (offset > AIM_MAX_FILE_SIZE || len > AIM_MAX_FILE_SIZE) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1001 char *buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1002 int i = 8;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1003 if (modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1004 i += strlen(modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1005 buf = g_malloc(i);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1006 i = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1007 if (modname) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1008 memcpy(buf, modname, strlen(modname));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1009 i += strlen(modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1010 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1011 buf[i++] = offset & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1012 buf[i++] = (offset >> 8) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1013 buf[i++] = (offset >> 16) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1014 buf[i++] = (offset >> 24) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1015 buf[i++] = len & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1016 buf[i++] = (len >> 8) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1017 buf[i++] = (len >> 16) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1018 buf[i++] = (len >> 24) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1019 debug_printf("len + offset is invalid, hashing request\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1020 aim_sendmemblock(sess, command->conn, offset, i, buf, AIM_SENDMEMBLOCK_FLAG_ISREQUEST);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1021 g_free(buf);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1022 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1023 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1024 */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1025
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1026 pos = g_new0(struct pieceofcrap, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1027 pos->gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1028 pos->conn = fr->conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1029
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1030 pos->offset = offset;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1031 pos->len = len;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1032 pos->modname = modname ? g_strdup(modname) : NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1033
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1034 fd = proxy_connect("gaim.sourceforge.net", 80, straight_to_hell, pos);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1035 if (fd < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1036 if (pos->modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1037 g_free(pos->modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1038 g_free(pos);
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
1039 do_error_dialog(_("Gaim was Unable to get valid login hash."),
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
1040 _("You may be disconnected shortly. You may want to use TOC until "
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
1041 "this is fixed. Check " WEBSITE " for updates."), GAIM_WARNING);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1042 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1043 pos->fd = fd;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1044
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1045 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1046 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1047
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1048 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
1049 char *key;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1050 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1051 struct gaim_connection *gc = sess->aux_data;
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1052 struct oscar_data *odata = gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1053
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1054 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1055 key = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1056 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1057
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1058 if (odata->icq) {
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1059 struct client_info_s info = CLIENTINFO_ICQ_KNOWNGOOD;
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1060 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
1061 } else {
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1062 #if 0
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1063 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
1064 #endif
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1065 struct client_info_s info = CLIENTINFO_AIM_KNOWNGOOD;
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
1066 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
1067 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1068
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1069 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1070 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1071
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1072 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
1073 struct gaim_connection *gc = sess->aux_data;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1074 struct chat_connection *chatcon;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1075 static int id = 1;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1076
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1077 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
1078 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
1079 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
1080 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
1081 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
1082
2672
5c9b7617a1f3 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
1083 aim_clientready(sess, fr->conn);
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1084
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1085 chatcon = find_oscar_chat_by_conn(gc, fr->conn);
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1086 chatcon->id = id;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1087 chatcon->cnv = serv_got_joined_chat(gc, id++, chatcon->show);
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1088
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1089 return 1;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1090 }
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
1091
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1092 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
1093
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1094 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
1095 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
1096
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1097 aim_clientready(sess, fr->conn);
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1098
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1099 aim_chatnav_reqrights(sess, fr->conn);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1100
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1101 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1102 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1103
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1104 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
1105
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1106 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
1107 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
1108
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1109 aim_email_sendcookies(sess, fr->conn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1110 aim_email_activate(sess, fr->conn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1111 aim_clientready(sess, fr->conn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1112
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1113 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1114 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1115
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1116 static void oscar_chatnav_connect(gpointer data, gint source, GaimInputCondition cond) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1117 struct gaim_connection *gc = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1118 struct oscar_data *odata;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1119 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1120 aim_conn_t *tstconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1121
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1122 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1123 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1124 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1125 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1126
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1127 odata = gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1128 sess = odata->sess;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1129 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_CHATNAV);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1130
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1131 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1132 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1133 debug_printf("unable to connect to chatnav server\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1134 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1135 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1136
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1137 aim_conn_completeconnect(sess, tstconn);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1138 odata->cnpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ,
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1139 oscar_callback, tstconn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1140 debug_printf("chatnav: connected\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1141 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1142
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1143 static void oscar_auth_connect(gpointer data, gint source, GaimInputCondition cond)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1144 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1145 struct gaim_connection *gc = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1146 struct oscar_data *odata;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1147 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1148 aim_conn_t *tstconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1149
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1150 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1151 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1152 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1153 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1154
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1155 odata = gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1156 sess = odata->sess;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1157 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_AUTH);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1158
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1159 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1160 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1161 debug_printf("unable to connect to authorizer\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1162 return;
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
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1165 aim_conn_completeconnect(sess, tstconn);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1166 odata->paspa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1167 oscar_callback, tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1168 debug_printf("chatnav: connected\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1169 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1170
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1171 static void oscar_chat_connect(gpointer data, gint source, GaimInputCondition cond)
2086
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 struct chat_connection *ccon = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1174 struct gaim_connection *gc = ccon->gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1175 struct oscar_data *odata;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1176 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1177 aim_conn_t *tstconn;
2086
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 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1180 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1181 g_free(ccon->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1182 g_free(ccon->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1183 g_free(ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1184 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1185 }
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 odata = gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1188 sess = odata->sess;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1189 tstconn = ccon->conn;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1190
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1191 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1192 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1193 g_free(ccon->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1194 g_free(ccon->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1195 g_free(ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1196 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1197 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1198
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1199 aim_conn_completeconnect(sess, ccon->conn);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1200 ccon->inpa = gaim_input_add(tstconn->fd,
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1201 GAIM_INPUT_READ,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1202 oscar_callback, tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1203 odata->oscar_chats = g_slist_append(odata->oscar_chats, ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1204 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1205
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1206 static void oscar_email_connect(gpointer data, gint source, GaimInputCondition cond) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1207 struct gaim_connection *gc = data;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1208 struct oscar_data *odata;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1209 aim_session_t *sess;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1210 aim_conn_t *tstconn;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1211
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1212 if (!g_slist_find(connections, gc)) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1213 close(source);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1214 return;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1215 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1216
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1217 odata = gc->proto_data;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1218 sess = odata->sess;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1219 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_EMAIL);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1220
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1221 if (source < 0) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1222 aim_conn_kill(sess, &tstconn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1223 debug_printf("unable to connect to email server\n");
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1224 return;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1225 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1226
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1227 aim_conn_completeconnect(sess, tstconn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1228 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
1229 debug_printf("email: connected\n");
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1230 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1231
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1232 /* 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
1233 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
1234 va_list ap;
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1235 struct aim_redirect_data *redir;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1236 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1237 struct aim_user *user = gc->user;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1238 aim_conn_t *tstconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1239 int i;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1240 char *host;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1241 int port;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1242
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1243 port = user->proto_opt[USEROPT_AUTHPORT][0] ?
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1244 atoi(user->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1245
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1246 va_start(ap, fr);
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1247 redir = va_arg(ap, struct aim_redirect_data *);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1248 va_end(ap);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1249
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1250 for (i = 0; i < (int)strlen(redir->ip); i++) {
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1251 if (redir->ip[i] == ':') {
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1252 port = atoi(&(redir->ip[i+1]));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1253 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1254 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1255 }
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1256 host = g_strndup(redir->ip, i);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1257
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1258 switch(redir->group) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1259 case 0x7: /* Authorizer */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1260 debug_printf("Reconnecting with authorizor...\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1261 tstconn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1262 if (tstconn == NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1263 debug_printf("unable to reconnect with authorizer\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1264 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1265 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1266 }
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1267 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
1268 aim_conn_addhandler(sess, tstconn, 0x0007, 0x0003, gaim_info_change, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1269 aim_conn_addhandler(sess, tstconn, 0x0007, 0x0005, gaim_info_change, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1270 aim_conn_addhandler(sess, tstconn, 0x0007, 0x0007, gaim_account_confirm, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1271
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1272 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1273 tstconn->fd = proxy_connect(host, port, oscar_auth_connect, gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1274 if (tstconn->fd < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1275 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1276 debug_printf("unable to reconnect with authorizer\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1277 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1278 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1279 }
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1280 aim_sendcookie(sess, tstconn, redir->cookie);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1281 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1282 case 0xd: /* ChatNav */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1283 tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHATNAV, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1284 if (tstconn == NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1285 debug_printf("unable to connect to chatnav server\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1286 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1287 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1288 }
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1289 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
1290
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1291 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1292 tstconn->fd = proxy_connect(host, port, oscar_chatnav_connect, gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1293 if (tstconn->fd < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1294 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1295 debug_printf("unable to connect to chatnav server\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1296 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1297 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1298 }
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1299 aim_sendcookie(sess, tstconn, redir->cookie);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1300 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1301 case 0xe: /* Chat */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1302 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1303 struct chat_connection *ccon;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1304
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1305 tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHAT, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1306 if (tstconn == NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1307 debug_printf("unable to connect to chat server\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1308 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1309 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1310 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1311
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
1312 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
1313
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1314 ccon = g_new0(struct chat_connection, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1315 ccon->conn = tstconn;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1316 ccon->gc = gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1317 ccon->fd = -1;
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1318 ccon->name = g_strdup(redir->chat.room);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1319 ccon->exchange = redir->chat.exchange;
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1320 ccon->instance = redir->chat.instance;
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1321 ccon->show = extract_name(redir->chat.room);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1322
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1323 ccon->conn->status |= AIM_CONN_STATUS_INPROGRESS;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1324 ccon->conn->fd = proxy_connect(host, port, oscar_chat_connect, ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1325 if (ccon->conn->fd < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1326 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1327 debug_printf("unable to connect to chat server\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1328 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1329 g_free(ccon->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1330 g_free(ccon->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1331 g_free(ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1332 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1333 }
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1334 aim_sendcookie(sess, tstconn, redir->cookie);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1335 debug_printf("Connected to chat room %s exchange %d\n", ccon->name, ccon->exchange);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1336 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1337 break;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1338
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1339 case 0x0018: { /* email */
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1340 if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_EMAIL, NULL))) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1341 debug_printf("unable to connect to email server\n");
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1342 g_free(host);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1343 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1344 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1345 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
1346
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1347 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1348 tstconn->fd = proxy_connect(host, port, oscar_email_connect, gc);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1349 if (tstconn->fd < 0) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1350 aim_conn_kill(sess, &tstconn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1351 debug_printf("unable to connect to email server\n");
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1352 g_free(host);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1353 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1354 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1355 aim_sendcookie(sess, tstconn, redir->cookie);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1356 } break;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1357
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1358 default: /* huh? */
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
1359 debug_printf("got redirect for unknown service 0x%04x\n", redir->group);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1360 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1361 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1362
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1363 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1364 return 1;
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
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1367 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
1368 struct gaim_connection *gc = sess->aux_data;
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
1369 struct oscar_data *od = gc->proto_data;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1370 aim_userinfo_t *info;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1371 time_t time_idle = 0, signon = 0;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1372 int type = 0;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1373 int caps = 0;
2305
9ba346379088 [gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2303
diff changeset
1374 char *tmp;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1375
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1376 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1377 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
1378 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1379 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1380
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1381 if (info->present & AIM_USERINFO_PRESENT_CAPABILITIES)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1382 caps = info->capabilities;
3267
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1383 if (info->flags & AIM_FLAG_ACTIVEBUDDY)
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1384 type |= UC_AB;
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1385
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1386 if ((!od->icq) && (info->present & AIM_USERINFO_PRESENT_FLAGS)) {
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1387 if (info->flags & AIM_FLAG_UNCONFIRMED)
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1388 type |= UC_UNCONFIRMED;
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1389 if (info->flags & AIM_FLAG_ADMINISTRATOR)
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1390 type |= UC_ADMIN;
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1391 if (info->flags & AIM_FLAG_AOL)
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1392 type |= UC_AOL;
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1393 if (info->flags & AIM_FLAG_FREE)
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1394 type |= UC_NORMAL;
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1395 if (info->flags & AIM_FLAG_AWAY)
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1396 type |= UC_UNAVAILABLE;
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1397 if (info->flags & AIM_FLAG_WIRELESS)
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
1398 type |= UC_WIRELESS;
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
1399 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1400 if (info->present & AIM_USERINFO_PRESENT_ICQEXTSTATUS) {
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
1401 type = (info->icqinfo.status << 16);
3013
b937e542f50e [gaim-migrate @ 3026]
Sean Egan <seanegan@pidgin.im>
parents: 3009
diff changeset
1402 if (!(info->icqinfo.status & AIM_ICQ_STATE_CHAT) &&
b937e542f50e [gaim-migrate @ 3026]
Sean Egan <seanegan@pidgin.im>
parents: 3009
diff changeset
1403 (info->icqinfo.status != AIM_ICQ_STATE_NORMAL)) {
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1404 type |= UC_UNAVAILABLE;
3013
b937e542f50e [gaim-migrate @ 3026]
Sean Egan <seanegan@pidgin.im>
parents: 3009
diff changeset
1405 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1406 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1407
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1408 if (caps & AIM_CAPS_ICQ)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1409 caps ^= AIM_CAPS_ICQ;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1410
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1411 if (info->present & AIM_USERINFO_PRESENT_IDLE) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1412 time(&time_idle);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1413 time_idle -= info->idletime*60;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1414 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1415
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1416 if (info->present & AIM_USERINFO_PRESENT_SESSIONLEN)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1417 signon = time(NULL) - info->sessionlen;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1418
2305
9ba346379088 [gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2303
diff changeset
1419 tmp = g_strdup(normalize(gc->username));
9ba346379088 [gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2303
diff changeset
1420 if (!strcmp(tmp, normalize(info->sn)))
9ba346379088 [gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2303
diff changeset
1421 g_snprintf(gc->displayname, sizeof(gc->displayname), "%s", info->sn);
9ba346379088 [gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2303
diff changeset
1422 g_free(tmp);
9ba346379088 [gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2303
diff changeset
1423
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
1424 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
1425 time_idle, type, caps);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1426
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1427 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1428 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1429
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1430 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
1431 aim_userinfo_t *info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1432 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1433 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1434
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1435 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
1436 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1437 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1438
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1439 serv_got_update(gc, info->sn, 0, 0, 0, 0, 0, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1440
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1441 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1442 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1443
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1444 static void cancel_direct_im(struct ask_direct *d) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1445 debug_printf("Freeing DirectIM prompts.\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1446
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1447 g_free(d->sn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1448 g_free(d);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1449 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1450
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1451 static void oscar_directim_callback(gpointer data, gint source, GaimInputCondition condition) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1452 struct direct_im *dim = data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1453 struct gaim_connection *gc = dim->gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1454 struct oscar_data *od = gc->proto_data;
2235
8828cb249372 [gaim-migrate @ 2245]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2232
diff changeset
1455 struct conversation *cnv;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1456 char buf[256];
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1457 struct sockaddr name;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1458 socklen_t name_len = 1;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1459
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1460 if (!g_slist_find(connections, gc)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1461 g_free(dim);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1462 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1463 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1464
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1465 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1466 g_free(dim);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1467 return;
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
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1470 if (dim->conn->fd != source)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1471 dim->conn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1472 aim_conn_completeconnect(od->sess, dim->conn);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1473 if (!(cnv = find_conversation(dim->name)))
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1474 cnv = new_conversation(dim->name);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1475
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1476 /* 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
1477 if (getpeername(source, &name, &name_len) == 0) {
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1478 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
1479 dim->connected = TRUE;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1480 write_to_conv(cnv, buf, WFLAG_SYSTEM, NULL, time(NULL), -1);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1481 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1482 od->direct_ims = g_slist_append(od->direct_ims, dim);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
1483
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1484 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
1485 oscar_callback, dim->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1486 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1487
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1488 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
1489 struct gaim_connection *gc = sess->aux_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1490 va_list ap;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1491 aim_conn_t *conn;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1492 const char *cook;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1493 struct oscar_file_transfer *oft;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1494
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1495 va_start(ap, fr);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1496 conn = va_arg(ap, aim_conn_t *);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1497 cook = va_arg(ap, const char *);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1498 va_end(ap);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1499
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1500 oft = find_oft_by_cookie(gc, cook);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1501 if (oft->filesdone == oft->totfiles)
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1502 oscar_file_transfer_disconnect(sess, conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1503 else
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1504 /* Send header for next file */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1505 oscar_sendfile_request(sess, oft);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1506
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1507 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1508 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1509
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1510 /* Called once for each file before sending the raw data. */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1511 static int oscar_sendfile_request(aim_session_t *sess,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1512 struct oscar_file_transfer *oft) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1513 char *name;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1514 int size;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1515
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1516 transfer_get_file_info(oft->xfer, &size, &name);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1517 aim_oft_sendfile_request(sess, oft->conn, name, oft->filesdone,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1518 oft->totfiles, size, oft->totsize);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1519
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1520 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1521 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1522
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1523 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
1524 struct gaim_connection *gc = sess->aux_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1525 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1526 struct oscar_file_transfer *oft;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1527 va_list ap;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1528 aim_conn_t *conn, *listenerconn;
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1529
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1530 va_start(ap, fr);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1531 conn = va_arg(ap, aim_conn_t *);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1532 listenerconn = va_arg(ap, aim_conn_t *);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1533 va_end(ap);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1534
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1535 oft = find_oft_by_conn(gc, listenerconn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1536 oft->conn = conn;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1537 /* Stop watching listener conn; watch transfer conn instead */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1538 gaim_input_remove(oft->watcher);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1539 aim_conn_kill(sess, &listenerconn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1540
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1541 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
1542 AIM_CB_OFT_SENDFILEFILESEND,
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1543 oscar_file_transfer_do,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1544 0);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1545 aim_conn_addhandler(sess, conn,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1546 AIM_CB_FAM_OFT,
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
1547 AIM_CB_OFT_SENDFILECOMPLETE,
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1548 oscar_sendfile_out_done,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1549 0);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1550 oft->watcher = gaim_input_add(oft->conn->fd, GAIM_INPUT_READ,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1551 oscar_callback, oft->conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1552
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1553 oscar_sendfile_request(sess, oft);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1554
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1555 return 0;
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
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1558 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
1559 struct gaim_connection *gc = sess->aux_data;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1560 va_list ap;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1561 struct oscar_file_transfer *oft;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1562 char *cookie;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1563 aim_conn_t *bosconn;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1564
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1565 va_start(ap, fr);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1566 bosconn = va_arg(ap, aim_conn_t *);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1567 cookie = va_arg(ap, char *);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1568 va_end(ap);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1569
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1570 if ((oft = find_oft_by_cookie(gc, cookie))) {
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1571 aim_canceltransfer(sess, bosconn, oft->cookie,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1572 oft->sn, AIM_CAPS_SENDFILE);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1573
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1574 transfer_abort(oft->xfer, _("Transfer timed out"));
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1575 oscar_file_transfer_disconnect(sess, oft->conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1576 }
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1577
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1578 return 1; /* success */
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1579 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1580
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1581 /* Called once at the beginning of an outgoing transfer session. */
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
1582 static void oscar_file_transfer_out(struct gaim_connection *gc,
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1583 struct file_transfer *xfer, const char *name, int totfiles,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1584 int totsize) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1585 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1586 struct oscar_file_transfer *oft = find_oft_by_xfer(gc, xfer);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1587
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1588 oft->xfer = xfer;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1589 oft->totsize = totsize;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1590 oft->totfiles = totfiles;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1591 oft->filesdone = 0;
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 oft->conn = aim_sendfile_initiate(od->sess, oft->sn,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1594 name, totfiles, oft->totsize, oft->cookie);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1595 if (!oft->conn) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1596 do_error_dialog(_("Couldn't open listener to send file"),
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1597 _("File transfer aborted"),
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1598 GAIM_ERROR);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1599 return;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1600 }
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1601
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1602 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
1603 AIM_CB_OFT_SENDFILEINITIATE,
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1604 oscar_sendfile_accepted,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1605 0);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1606 oft->watcher = gaim_input_add(oft->conn->fd, GAIM_INPUT_READ,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1607 oscar_callback, oft->conn);
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
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
1610 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
1611 struct file_transfer *xfer, const char *buf, int len)
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1612 {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1613 struct oscar_file_transfer *oft = find_oft_by_xfer(gc, xfer);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1614 aim_session_t *sess = aim_conn_getsess(oft->conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1615
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1616 if (oft->type == OFT_SENDFILE_IN)
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1617 aim_update_checksum(sess, oft->conn, buf, len);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1618 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1619
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
1620 static void oscar_file_transfer_in(struct gaim_connection *gc,
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1621 struct file_transfer *xfer, int offset) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1622 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1623 struct oscar_file_transfer *oft = find_oft_by_xfer(gc, xfer);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1624
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1625 oft->xfer = xfer;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1626 oft->conn = aim_accepttransfer(od->sess, od->conn, oft->sn,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1627 oft->cookie, oft->ip,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1628 oft->port,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1629 AIM_CAPS_SENDFILE);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1630 if (!oft->conn) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1631 char *buf = g_strdup_printf("Couldn't connect to remote host");
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1632 do_error_dialog(buf, NULL, GAIM_ERROR);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1633 g_free(buf);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1634 return;
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 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
1638 AIM_CB_OFT_SENDFILEFILEREQ, oscar_file_transfer_do,
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1639 0);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1640
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1641 oft->watcher = gaim_input_add(oft->conn->fd, GAIM_INPUT_READ,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1642 oscar_callback, oft->conn);
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
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
1645 static void oscar_file_transfer_cancel(struct gaim_connection *gc,
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1646 struct file_transfer *xfer) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1647 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1648 struct oscar_file_transfer *oft = find_oft_by_xfer(gc, xfer);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1649
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1650 if (oft->type == OFT_SENDFILE_IN)
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1651 aim_denytransfer(od->sess, oft->sn, oft->cookie,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1652 AIM_TRANSFER_DENY_DECLINE);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1653
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1654 od->file_transfers = g_slist_remove(od->file_transfers, oft);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1655 aim_conn_kill(od->sess, &oft->conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1656 g_free(oft->sn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1657 g_free(oft);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1658 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1659
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1660 static int accept_direct_im(struct ask_direct *d) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1661 struct gaim_connection *gc = d->gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1662 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1663 struct direct_im *dim;
2945
839d36ea8de6 [gaim-migrate @ 2958]
Rob Flynn <gaim@robflynn.com>
parents: 2943
diff changeset
1664 char *host; int port = 4443;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1665 int i;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1666
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1667 debug_printf("Accepted DirectIM.\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1668
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1669 dim = find_direct_im(od, d->sn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1670 if (dim) {
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1671 cancel_direct_im(d); /* 40 */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1672 return TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1673 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1674 dim = g_new0(struct direct_im, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1675 dim->gc = d->gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1676 g_snprintf(dim->name, sizeof dim->name, "%s", d->sn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1677
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1678 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
1679 if (!dim->conn) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1680 g_free(dim);
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1681 cancel_direct_im(d);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1682 return TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1683 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1684
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1685 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
1686 gaim_directim_incoming, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1687 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
1688 gaim_directim_typing, 0);
3033
1f078ab46e76 [gaim-migrate @ 3046]
Sean Egan <seanegan@pidgin.im>
parents: 3031
diff changeset
1689 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
1690 gaim_update_ui, 0);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1691 for (i = 0; i < (int)strlen(d->ip); i++) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1692 if (d->ip[i] == ':') {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1693 port = atoi(&(d->ip[i+1]));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1694 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1695 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1696 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1697 host = g_strndup(d->ip, i);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1698 dim->conn->status |= AIM_CONN_STATUS_INPROGRESS;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1699 dim->conn->fd = proxy_connect(host, port, oscar_directim_callback, dim);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1700 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1701 if (dim->conn->fd < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1702 aim_conn_kill(od->sess, &dim->conn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1703 g_free(dim);
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1704 cancel_direct_im(d);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1705 return TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1706 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1707
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1708 cancel_direct_im(d);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1709
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1710 return TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1711 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1712
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
1713 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
1714 char *tmp;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1715 struct gaim_connection *gc = sess->aux_data;
3600
776215788f43 [gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents: 3596
diff changeset
1716 struct oscar_data *od = gc->proto_data;
2273
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2249
diff changeset
1717 int flags = 0;
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
1718 int convlen;
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
1719 GError *err = NULL;
2273
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2249
diff changeset
1720
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2249
diff changeset
1721 if (args->icbmflags & AIM_IMFLAGS_AWAY)
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2249
diff changeset
1722 flags |= IM_FLAG_AWAY;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1723
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1724 if (args->icbmflags & AIM_IMFLAGS_HASICON) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1725 struct icon_req *ir = NULL;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1726 GSList *h = od->hasicons;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1727 char *who = normalize(userinfo->sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1728 debug_printf("%s has an icon\n", userinfo->sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1729 while (h) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1730 ir = h->data;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1731 if (!strcmp(ir->user, who))
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1732 break;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1733 h = h->next;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1734 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1735 if (!h) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1736 ir = g_new0(struct icon_req, 1);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1737 ir->user = g_strdup(who);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1738 od->hasicons = g_slist_append(od->hasicons, ir);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1739 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1740 if ((args->iconlen != ir->length) ||
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1741 (args->iconsum != ir->checksum) ||
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1742 (args->iconstamp != ir->timestamp))
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1743 ir->request = TRUE;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1744 ir->length = args->iconlen;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1745 ir->checksum = args->iconsum;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1746 ir->timestamp = args->iconstamp;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1747 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1748
2336
43d65c408209 [gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2315
diff changeset
1749 if (gc->user->iconfile[0] && (args->icbmflags & AIM_IMFLAGS_BUDDYREQ)) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1750 FILE *file;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1751 struct stat st;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1752
2248
091ec337929f [gaim-migrate @ 2258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
1753 if (!stat(gc->user->iconfile, &st)) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1754 char *buf = g_malloc(st.st_size);
2248
091ec337929f [gaim-migrate @ 2258]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2246
diff changeset
1755 file = fopen(gc->user->iconfile, "r");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1756 if (file) {
2603
0c39616168c9 [gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2597
diff changeset
1757 int len = fread(buf, 1, st.st_size, file);
0c39616168c9 [gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2597
diff changeset
1758 debug_printf("Sending buddy icon to %s (%d bytes, %d reported)\n",
0c39616168c9 [gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2597
diff changeset
1759 userinfo->sn, len, st.st_size);
2673
84bb25b76700 [gaim-migrate @ 2686]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2672
diff changeset
1760 aim_send_icon(sess, userinfo->sn, buf, st.st_size,
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1761 st.st_mtime, aim_iconsum(buf, st.st_size));
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1762 fclose(file);
2336
43d65c408209 [gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2315
diff changeset
1763 } else
43d65c408209 [gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2315
diff changeset
1764 debug_printf("Can't open buddy icon file!\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1765 g_free(buf);
2336
43d65c408209 [gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2315
diff changeset
1766 } else
43d65c408209 [gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2315
diff changeset
1767 debug_printf("Can't stat buddy icon file!\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1768 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1769
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1770 if (args->icbmflags & AIM_IMFLAGS_UNICODE) {
3722
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1771 /* This message is marked as UNICODE, so we have to
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1772 * 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
1773 * This conversion should *never* fail, if it does it
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1774 * means that either the incoming ICBM is corrupted or
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1775 * there is something we don't understand about it. */
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1776 /* For the record, AIM Unicode is big-endian UCS-2 */
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
1777 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
1778 if (err) {
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
1779 debug_printf("Unicode IM conversion: %s\n", err->message);
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
1780 tmp = strdup(_("(There was an error receiving this message)"));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1781 }
3722
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1782 } else {
3850
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
1783 /* 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
1784 * unflagged messages, which are ASCII. That's OK because
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1785 * ASCII is a strict subset of ISO-8859-1; this should
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1786 * help with compatibility with old, broken versions of
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1787 * gaim (everything before 0.60) and other broken clients
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1788 * that will happily send ISO-8859-1 without marking it as
6bbde47b22e7 [gaim-migrate @ 3855]
Ethan Blanton <elb@pidgin.im>
parents: 3717
diff changeset
1789 * such */
3850
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
1790 if (args->icbmflags & AIM_IMFLAGS_ISO_8859_1) {
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
1791 debug_printf ("Received ISO-8859-1 IM\n");
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
1792 }
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
1793 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
1794 if (err) {
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
1795 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
1796 tmp = strdup(_("(There was an error receiving this message)"));
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
1797 }
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
1798 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1799
3850
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
1800 if (args->icbmflags & AIM_IMFLAGS_CUSTOMCHARSET) {
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
1801 debug_printf ("Custom character set: %d %d\n", args->charset, args->charsubset);
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
1802 }
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
1803
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
1804 if (args->icbmflags & AIM_IMFLAGS_TYPINGNOT) {
3600
776215788f43 [gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents: 3596
diff changeset
1805 char *who = normalize(userinfo->sn);
776215788f43 [gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents: 3596
diff changeset
1806 if (!g_hash_table_lookup(od->supports_tn, who))
776215788f43 [gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents: 3596
diff changeset
1807 g_hash_table_insert(od->supports_tn, who, who);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
1808 }
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
1809
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
1810 //strip_linefeed(tmp);
2856
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2833
diff changeset
1811 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
1812 g_free(tmp);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1813
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1814 return 1;
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
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
1817 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
1818 struct gaim_connection *gc = sess->aux_data;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1819
2869
3165d3aff6c0 [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
1820 debug_printf("rendezvous status %d (%s)\n", args->status, userinfo->sn);
3165d3aff6c0 [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
1821
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1822
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1823 if (args->status == AIM_RENDEZVOUS_CANCEL) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1824 struct oscar_file_transfer *oft;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1825 oft = find_oft_by_cookie(gc, args->cookie);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1826 if (oft) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1827 transfer_abort(oft->xfer, _("Buddy canceled transfer"));
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1828 oscar_file_transfer_disconnect(sess, oft->conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1829 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1830 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1831 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1832 else if (args->status == AIM_RENDEZVOUS_ACCEPT) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1833 /* The user accepted our transfer request, but we don't
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1834 * really need to do anything yet.
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1835 * -- wtm
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1836 */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1837 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1838 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1839 else if (args->status != AIM_RENDEZVOUS_PROPOSE) {
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1840 debug_printf("unknown rendezvous status\n");
2869
3165d3aff6c0 [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
1841 return 1;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1842 }
2869
3165d3aff6c0 [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
1843
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1844 if (args->reqclass & AIM_CAPS_CHAT) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1845 char *name = extract_name(args->info.chat.roominfo.name);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1846 int *exch = g_new0(int, 1);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1847 GList *m = NULL;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1848 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
1849 *exch = args->info.chat.roominfo.exchange;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1850 m = g_list_append(m, exch);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1851 serv_got_chat_invite(gc,
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1852 name ? name : args->info.chat.roominfo.name,
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1853 userinfo->sn,
2869
3165d3aff6c0 [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
1854 (char *)args->msg,
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1855 m);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1856 if (name)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1857 g_free(name);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1858 } else if (args->reqclass & AIM_CAPS_SENDFILE) {
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1859 struct oscar_file_transfer *oft;
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1860 struct oscar_data *od = gc->proto_data;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1861
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1862 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
1863 {
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1864 /* This is a request for a reverse connection,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1865 * which is used by newer clients when for some
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1866 * reason they are unable to connect to our listener
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1867 * (e.g. they are behind a firewall).
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1868 */
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1869 if (oft->type != OFT_SENDFILE_OUT)
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1870 return -1;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1871
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1872 /* It seems that Trillian sends some weird
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1873 * packets. Sanity check.
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1874 */
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1875 if (!args->verifiedip)
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1876 return -1;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1877
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1878 /* This connection isn't used for anything, since
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1879 * we're using a reverse connection instead.
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1880 */
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1881 gaim_input_remove(oft->watcher);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1882 aim_conn_kill(sess, &oft->conn);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1883
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1884 debug_printf("sendfile: doing reverse connection to %s:%d\n", args->verifiedip, args->port);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1885
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1886 oft->conn = aim_accepttransfer(sess, od->conn,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1887 userinfo->sn,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1888 args->cookie, args->verifiedip,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1889 args->port,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1890 AIM_CAPS_SENDFILE);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1891
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1892 /* XXX: this is a bit of a hack: ideally
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1893 * we should wait on GAIM_INPUT_WRITE. -- wtm
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1894 */
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1895 aim_conn_completeconnect(sess, oft->conn);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1896
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1897 oscar_sendfile_request(sess, oft);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1898
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1899 aim_conn_addhandler(sess, oft->conn,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1900 AIM_CB_FAM_OFT,
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
1901 AIM_CB_OFT_SENDFILECOMPLETE,
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1902 oscar_sendfile_out_done,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1903 0);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1904 aim_conn_addhandler(sess, oft->conn,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1905 AIM_CB_FAM_OFT,
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
1906 AIM_CB_OFT_SENDFILEFILESEND,
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1907 oscar_file_transfer_do,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1908 0);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1909 oft->watcher = gaim_input_add(oft->conn->fd,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1910 GAIM_INPUT_READ, oscar_callback,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1911 oft->conn);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1912 return 0;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1913 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1914
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1915 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
1916 userinfo->sn, args->verifiedip, gc->username);
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1917
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1918 oft = g_new0(struct oscar_file_transfer, 1);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1919
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1920 oft->type = OFT_SENDFILE_IN;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1921 oft->sn = g_strdup(userinfo->sn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1922 strncpy(oft->ip, args->verifiedip, sizeof(oft->ip));
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1923 oft->port = args->port;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1924 memcpy(oft->cookie, args->cookie, 8);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1925
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
1926 od->file_transfers = g_slist_append(od->file_transfers, oft);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1927
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1928 oft->xfer = transfer_in_add(gc, userinfo->sn,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1929 args->info.sendfile.filename,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1930 args->info.sendfile.totsize,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1931 args->info.sendfile.totfiles,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1932 args->msg);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1933 } else if (args->reqclass & AIM_CAPS_GETFILE) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1934 } else if (args->reqclass & AIM_CAPS_VOICE) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1935 } else if (args->reqclass & AIM_CAPS_BUDDYICON) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1936 set_icon_data(gc, normalize(userinfo->sn), args->info.icon.icon,
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1937 args->info.icon.length);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1938 } else if (args->reqclass & AIM_CAPS_IMIMAGE) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1939 struct ask_direct *d = g_new0(struct ask_direct, 1);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1940 char buf[256];
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1941
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1942 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
1943 gc->username, userinfo->sn, args->verifiedip);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1944
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1945 d->gc = gc;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1946 d->sn = g_strdup(userinfo->sn);
2869
3165d3aff6c0 [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
1947 strncpy(d->ip, args->verifiedip, sizeof(d->ip));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1948 memcpy(d->cookie, args->cookie, 8);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1949 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
1950 userinfo->sn, gc->username);
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1951 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
1952 } else {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1953 debug_printf("Unknown reqclass %d\n", args->reqclass);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1954 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1955
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1956 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1957 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1958
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
1959 /*
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
1960 * Next 2 functions are for when other people ask you for authorization
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
1961 */
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1962 static void gaim_icq_authgrant(struct channel4_data *data) {
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
1963 char message;
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
1964 struct oscar_data *od = (struct oscar_data *)data->gc->proto_data;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
1965 message = 0;
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
1966 aim_send_im_ch4(od->sess, data->uin, AIM_ICQMSG_AUTHGRANTED, &message);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
1967 show_got_added(data->gc, NULL, data->uin, NULL, NULL);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
1968 g_free(data->uin);
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1969 g_free(data);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
1970 }
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
1971
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1972 static void gaim_icq_authdeny(struct channel4_data *data) {
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1973 gchar *message;
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1974 struct oscar_data *od = (struct oscar_data *)data->gc->proto_data;
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1975 message = g_strdup_printf("No reason given.");
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1976 aim_send_im_ch4(od->sess, data->uin, AIM_ICQMSG_AUTHDENIED, message);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1977 g_free(data->uin);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1978 g_free(message);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
1979 g_free(data);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
1980 }
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
1981
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
1982 /*
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
1983 * For when other people ask you for authorization
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
1984 */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
1985 static void gaim_icq_authask(struct gaim_connection *gc, fu32_t uin, char *msg) {
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
1986 struct channel4_data *data = g_new(struct channel4_data, 1);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
1987 /* The first 6 chars of the message are some type of alien gibberish, so skip them */
3867
0e747b4295cb [gaim-migrate @ 4019]
Rob Flynn <gaim@robflynn.com>
parents: 3858
diff changeset
1988 char *dialog_msg = g_strdup_printf("The user %lu wants to add you to their buddy list for the following reason: %s", uin, (msg && strlen(msg)>6) ? msg+6 : "No reason given.");
3159
15816c95c61c [gaim-migrate @ 3175]
Sean Egan <seanegan@pidgin.im>
parents: 3150
diff changeset
1989 debug_printf("Received an authorization request from UIN %lu\n", uin);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
1990 data->gc = gc;
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
1991 data->uin = g_strdup_printf("%lu", uin);
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1992 do_ask_dialog(dialog_msg, (msg && strlen(msg) > 6) ? msg+6 : _("No reason given."), data, _("Authorize"), gaim_icq_authgrant, _("Deny"), gaim_icq_authdeny);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
1993 g_free(dialog_msg);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
1994 }
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
1995
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
1996 /*
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
1997 * Next 2 functions are for when someone sends you contacts
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
1998 */
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
1999 static void gaim_icq_contactadd(struct channel4_data *data) {
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2000 show_add_buddy(data->gc, data->uin, NULL, data->nick);
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
2001 free(data->uin);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
2002 free(data->nick);
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
2003 g_free(data);
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2004 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2005
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
2006 static void gaim_icq_contactdontadd(struct channel4_data *data) {
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2007 free(data->uin);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2008 free(data->nick);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2009 g_free(data);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2010 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2011
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2012 static int incomingim_chan4(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch4_args *args) {
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2013 struct gaim_connection *gc = sess->aux_data;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2014
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2015 switch (args->type)
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2016 {
3316
43bb95f6167a [gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents: 3279
diff changeset
2017 case 0x0001: { /* An almost-normal instant message. Mac ICQ sends this. It's peculiar. */
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2018 gchar *uin, *message;
3316
43bb95f6167a [gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents: 3279
diff changeset
2019 uin = g_strdup_printf("%lu", args->uin);
43bb95f6167a [gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents: 3279
diff changeset
2020 message = g_strdup(args->msg);
43bb95f6167a [gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents: 3279
diff changeset
2021 strip_linefeed(message);
43bb95f6167a [gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents: 3279
diff changeset
2022 serv_got_im(gc, uin, message, 0, time(NULL), -1);
43bb95f6167a [gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents: 3279
diff changeset
2023 g_free(uin);
43bb95f6167a [gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents: 3279
diff changeset
2024 g_free(message);
43bb95f6167a [gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents: 3279
diff changeset
2025 } break;
43bb95f6167a [gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents: 3279
diff changeset
2026
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2027 case 0x0004: { /* Someone sent you a URL */
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2028 gchar **text, *uin, *message;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2029 text = g_strsplit(args->msg, "þ", 2);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2030 if (text) {
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2031 uin = g_strdup_printf("%lu", args->uin);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2032 message = g_strdup_printf("<A HREF=\"%s\">%s</A>", text[1], text[0]);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2033 strip_linefeed(message);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2034 serv_got_im(gc, uin, message, 0, time(NULL), -1);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2035 g_strfreev(text);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2036 g_free(uin);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2037 g_free(message);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2038 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2039 } break;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2040
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2041 case 0x0006: { /* Someone requested authorization */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2042 gaim_icq_authask(gc, args->uin, args->msg);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2043 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2044
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2045 case 0x0007: { /* Someone has denied you authorization */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2046 char *dialog_msg;
3159
15816c95c61c [gaim-migrate @ 3175]
Sean Egan <seanegan@pidgin.im>
parents: 3150
diff changeset
2047 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, args->msg ? args->msg : _("No reason given."));
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
2048 do_error_dialog(_("ICQ authorization denied."), dialog_msg, GAIM_ERROR);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2049 g_free(dialog_msg);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2050 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2051
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2052 case 0x0008: { /* Someone has granted you authorization */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2053 char *dialog_msg;
3159
15816c95c61c [gaim-migrate @ 3175]
Sean Egan <seanegan@pidgin.im>
parents: 3150
diff changeset
2054 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
2055 do_error_dialog("ICQ authorization accepted.", dialog_msg, GAIM_INFO);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2056 g_free(dialog_msg);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2057 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2058
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2059 case 0x0012: {
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2060 /* Ack for authorizing/denying someone. Or possibly an ack for sending any system notice */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2061 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2062
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2063 case 0x0013: { /* Someone has sent you some ICQ contacts */
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2064 int i, num;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2065 gchar **text;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2066 text = g_strsplit(args->msg, "þ", 0);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2067 if (text) {
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2068 num = 0;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2069 for (i=0; i<strlen(text[0]); i++)
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2070 num = num*10 + text[0][i]-48;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2071 for (i=0; i<num; i++) {
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2072 struct channel4_data *data = g_new(struct channel4_data, 1);
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
2073 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
2074 data->gc = gc;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2075 data->uin = g_strdup(text[i*2+2]);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2076 data->nick = g_strdup(text[i*2+1]);
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
2077 do_ask_dialog(message, "Do you want to add this contact to your Buddy List?", data, _("Add"), gaim_icq_contactadd, _("Deny"), gaim_icq_contactdontadd);
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2078 g_free(message);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2079 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2080 g_strfreev(text);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2081 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2082 } break;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2083
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2084 case 0x001a: { /* Someone has requested that you send them from ICQ contacts */
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2085 /* This is boring and silly. */
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2086 } break;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
2087
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2088 default: {
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2089 debug_printf("Received a channel 4 message of unknown type (type 0x%04d).\n", args->type);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2090 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2091 }
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 return 1;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2094 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2095
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2096 static int gaim_parse_incoming_im(aim_session_t *sess, aim_frame_t *fr, ...) {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2097 int channel, ret = 0;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2098 aim_userinfo_t *userinfo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2099 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2100
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2101 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2102 channel = va_arg(ap, int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2103 userinfo = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2104
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2105 switch (channel) {
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2106 case 1: { /* standard message */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2107 struct aim_incomingim_ch1_args *args;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2108 args = va_arg(ap, struct aim_incomingim_ch1_args *);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2109 ret = incomingim_chan1(sess, fr->conn, userinfo, args);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2110 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2111
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2112 case 2: { /* rendevous */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2113 struct aim_incomingim_ch2_args *args;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2114 args = va_arg(ap, struct aim_incomingim_ch2_args *);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2115 ret = incomingim_chan2(sess, fr->conn, userinfo, args);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2116 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2117
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2118 case 4: { /* ICQ */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2119 struct aim_incomingim_ch4_args *args;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2120 args = va_arg(ap, struct aim_incomingim_ch4_args *);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2121 ret = incomingim_chan4(sess, fr->conn, userinfo, args);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2122 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2123
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2124 default: {
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2125 debug_printf("ICBM received on unsupported channel (channel 0x%04d).", channel);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
2126 } break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2127 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2128
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2129 va_end(ap);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2130
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2131 return ret;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2132 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2133
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2134 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
2135 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2136 fu16_t chan, nummissed, reason;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2137 aim_userinfo_t *userinfo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2138 char buf[1024];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2139
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2140 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2141 chan = (fu16_t)va_arg(ap, unsigned int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2142 userinfo = va_arg(ap, aim_userinfo_t *);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2143 nummissed = (fu16_t)va_arg(ap, unsigned int);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2144 reason = (fu16_t)va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2145 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2146
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2147 switch(reason) {
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2148 case 0:
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2149 /* Invalid (0) */
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2150 g_snprintf(buf,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2151 sizeof(buf),
2946
f55f9952021d [gaim-migrate @ 2959]
Rob Flynn <gaim@robflynn.com>
parents: 2945
diff changeset
2152 nummissed == 1 ?
2947
017dad5d4132 [gaim-migrate @ 2960]
Rob Flynn <gaim@robflynn.com>
parents: 2946
diff changeset
2153 _("You missed %d message from %s because it was invalid.") :
017dad5d4132 [gaim-migrate @ 2960]
Rob Flynn <gaim@robflynn.com>
parents: 2946
diff changeset
2154 _("You missed %d messages from %s because they were invalid."),
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2155 nummissed,
2947
017dad5d4132 [gaim-migrate @ 2960]
Rob Flynn <gaim@robflynn.com>
parents: 2946
diff changeset
2156 userinfo->sn);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2157 break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2158 case 1:
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2159 /* Message too large */
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2160 g_snprintf(buf,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2161 sizeof(buf),
2943
c4db4a45426f [gaim-migrate @ 2956]
Rob Flynn <gaim@robflynn.com>
parents: 2931
diff changeset
2162 nummissed == 1 ?
c4db4a45426f [gaim-migrate @ 2956]
Rob Flynn <gaim@robflynn.com>
parents: 2931
diff changeset
2163 _("You missed %d message from %s because it was too large.") :
2946
f55f9952021d [gaim-migrate @ 2959]
Rob Flynn <gaim@robflynn.com>
parents: 2945
diff changeset
2164 _("You missed %d messages from %s because they were too large."),
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2165 nummissed,
2943
c4db4a45426f [gaim-migrate @ 2956]
Rob Flynn <gaim@robflynn.com>
parents: 2931
diff changeset
2166 userinfo->sn);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2167 break;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2168 case 2:
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2169 /* Rate exceeded */
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2170 g_snprintf(buf,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2171 sizeof(buf),
2943
c4db4a45426f [gaim-migrate @ 2956]
Rob Flynn <gaim@robflynn.com>
parents: 2931
diff changeset
2172 nummissed == 1 ?
c4db4a45426f [gaim-migrate @ 2956]
Rob Flynn <gaim@robflynn.com>
parents: 2931
diff changeset
2173 _("You missed %d message from %s because the rate limit has been exceeded.") :
c4db4a45426f [gaim-migrate @ 2956]
Rob Flynn <gaim@robflynn.com>
parents: 2931
diff changeset
2174 _("You missed %d messages from %s because the rate limit has been exceeded."),
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2175 nummissed,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2176 userinfo->sn);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2177 break;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2178 case 3:
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2179 /* Evil Sender */
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2180 g_snprintf(buf,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2181 sizeof(buf),
2943
c4db4a45426f [gaim-migrate @ 2956]
Rob Flynn <gaim@robflynn.com>
parents: 2931
diff changeset
2182 nummissed == 1 ?
2947
017dad5d4132 [gaim-migrate @ 2960]
Rob Flynn <gaim@robflynn.com>
parents: 2946
diff changeset
2183 _("You missed %d message from %s because it was too evil.") :
2943
c4db4a45426f [gaim-migrate @ 2956]
Rob Flynn <gaim@robflynn.com>
parents: 2931
diff changeset
2184 _("You missed %d messages from %s because they are too evil."),
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2185 nummissed,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2186 userinfo->sn);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2187 break;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2188 case 4:
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2189 /* Evil Receiver */
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2190 g_snprintf(buf,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2191 sizeof(buf),
2943
c4db4a45426f [gaim-migrate @ 2956]
Rob Flynn <gaim@robflynn.com>
parents: 2931
diff changeset
2192 nummissed == 1 ?
c4db4a45426f [gaim-migrate @ 2956]
Rob Flynn <gaim@robflynn.com>
parents: 2931
diff changeset
2193 _("You missed %d message from %s because you are too evil.") :
c4db4a45426f [gaim-migrate @ 2956]
Rob Flynn <gaim@robflynn.com>
parents: 2931
diff changeset
2194 _("You missed %d messages from %s because you are too evil."),
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2195 nummissed,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2196 userinfo->sn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2197 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2198 default:
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2199 g_snprintf(buf,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2200 sizeof(buf),
2943
c4db4a45426f [gaim-migrate @ 2956]
Rob Flynn <gaim@robflynn.com>
parents: 2931
diff changeset
2201 nummissed == 1 ?
c4db4a45426f [gaim-migrate @ 2956]
Rob Flynn <gaim@robflynn.com>
parents: 2931
diff changeset
2202 _("You missed %d message from %s for unknown reasons.") :
c4db4a45426f [gaim-migrate @ 2956]
Rob Flynn <gaim@robflynn.com>
parents: 2931
diff changeset
2203 _("You missed %d messages from %s for unknown reasons."),
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2204 nummissed,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2205 userinfo->sn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2206 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2207 }
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
2208 do_error_dialog(buf, NULL, GAIM_ERROR);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2209
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2210 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2211 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2212
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2213 static char *gaim_icq_status(int state) {
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2214 /* 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
2215 if (state & AIM_ICQ_STATE_CHAT)
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2216 return g_strdup_printf("Free For Chat");
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2217 else if (state & AIM_ICQ_STATE_DND)
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2218 return g_strdup_printf("Do Not Disturb");
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2219 else if (state & AIM_ICQ_STATE_OUT)
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2220 return g_strdup_printf("Not Available");
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2221 else if (state & AIM_ICQ_STATE_BUSY)
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2222 return g_strdup_printf("Occupied");
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2223 else if (state & AIM_ICQ_STATE_AWAY)
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2224 return g_strdup_printf("Away");
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2225 else if (state & AIM_ICQ_STATE_WEBAWARE)
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2226 return g_strdup_printf("Web Aware");
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2227 else if (state & AIM_ICQ_STATE_INVISIBLE)
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2228 return g_strdup_printf("Invisible");
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2229 else
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2230 return g_strdup_printf("Online");
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2231 }
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2232
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2233 static int gaim_parse_clientauto_rend(aim_session_t *sess,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2234 const char *who, int reason, const char *cookie) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2235 struct gaim_connection *gc = sess->aux_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2236 struct oscar_file_transfer *oft;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2237 char *buf;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2238
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2239 switch (reason) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2240 case 3: /* Decline sendfile. */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2241 oft = find_oft_by_cookie(gc, cookie);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2242
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2243 if (oft) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2244 buf = g_strdup_printf(_("%s has declined to receive a file from %s.\n"),
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2245 who, gc->username);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2246 transfer_abort(oft->xfer, buf);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2247 g_free(buf);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2248 oscar_file_transfer_disconnect(sess, oft->conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2249 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2250 break;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2251 default:
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2252 debug_printf("Received an unknown rendezvous client auto-response from %s. Type 0x%04x\n", who, reason);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2253
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2254 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2255
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2256 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2257 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2258
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2259 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
2260 struct gaim_connection *gc = sess->aux_data;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2261 va_list ap;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2262 fu16_t chan, reason;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2263 char *who;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2264
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2265 va_start(ap, fr);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2266 chan = (fu16_t)va_arg(ap, unsigned int);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2267 who = va_arg(ap, char *);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2268 reason = (fu16_t)va_arg(ap, unsigned int);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2269
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2270 if (chan == 2) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2271 char *cookie = va_arg(ap, char *);
3637
6c9035380412 [gaim-migrate @ 3760]
Rob Flynn <gaim@robflynn.com>
parents: 3630
diff changeset
2272 va_end(ap);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2273
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2274 return gaim_parse_clientauto_rend(sess, who, reason,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2275 cookie);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2276 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2277
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2278 switch(reason) {
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2279 case 0x0003: { /* Reply from an ICQ status message request */
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2280 int state = (int)va_arg(ap, fu32_t);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2281 char *msg = va_arg(ap, char *);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2282 char *status_msg = gaim_icq_status(state);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2283 char *dialog_msg, **splitmsg;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2284 struct oscar_data *od = gc->proto_data;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2285 GSList *l = od->evilhack;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2286 gboolean evilhack = FALSE;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2287
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2288 /* Split at (carriage return/newline)'s, then rejoin later with BRs between. */
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2289 splitmsg = g_strsplit(msg, "\r\n", 0);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2290
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2291 /* If who is in od->evilhack, then we're just getting the away message, otherwise this
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2292 * will just get appended to the info box (which is already showing). */
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2293 while (l) {
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2294 char *x = l->data;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2295 if (!strcmp(x, normalize(who))) {
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2296 evilhack = TRUE;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2297 g_free(x);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2298 od->evilhack = g_slist_remove(od->evilhack, x);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2299 break;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2300 }
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2301 l = l->next;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2302 }
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2303
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2304 if (evilhack)
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2305 dialog_msg = g_strdup_printf(_("<B>UIN:</B> %s<BR><B>Status:</B> %s<BR><HR><BR>%s<BR>"), who, status_msg, g_strjoinv("<BR>", splitmsg));
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2306 else
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2307 dialog_msg = g_strdup_printf(_("<B>Status:</B> %s<BR><HR><BR>%s<BR>"), status_msg, g_strjoinv("<BR>", splitmsg));
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2308 g_show_info_text(gc, who, 2, dialog_msg, NULL);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2309
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2310 g_free(status_msg);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2311 g_free(dialog_msg);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2312 g_strfreev(splitmsg);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2313 } break;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2314
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2315 default: {
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2316 debug_printf("Received an unknown client auto-response from %s. Type 0x%04x\n", who, reason);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2317 } break;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2318 }
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2319 va_end(ap);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2320
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2321 return 1;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2322 }
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
2323
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2324 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
2325 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2326 fu16_t reason;
2865
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
2327 char *m;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2328
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2329 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2330 reason = (fu16_t)va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2331 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2332
2864
fe3f11682640 [gaim-migrate @ 2877]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2856
diff changeset
2333 debug_printf("snac threw error (reason 0x%04x: %s)\n", reason,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2334 (reason < msgerrreasonlen) ? msgerrreason[reason] : "unknown");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2335
2865
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
2336 m = g_strdup_printf(_("SNAC threw error: %s\n"),
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
2337 reason < msgerrreasonlen ? msgerrreason[reason] : "Unknown error");
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
2338 do_error_dialog(m, NULL, GAIM_ERROR);
2865
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
2339 g_free(m);
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
2340
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2341 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2342 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2343
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2344 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
2345 va_list ap;
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2346 char *data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2347 fu16_t reason;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2348 char buf[1024];
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2349 struct gaim_connection *gc = sess->aux_data;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2350 struct oscar_file_transfer *oft;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2351
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2352 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2353 reason = (fu16_t)va_arg(ap, unsigned int);
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2354 data = va_arg(ap, char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2355 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2356
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2357 /* 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
2358 if ((oft = find_oft_by_cookie(gc, data))) {
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2359 transfer_abort(oft->xfer,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2360 (reason < msgerrreasonlen) ? msgerrreason[reason] : _("No reason was given."));
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2361
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2362 oscar_file_transfer_disconnect(sess, oft->conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2363 return 1;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2364 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2365
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2366 /* Data is assumed to be the destination sn. */
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2367 snprintf(buf, sizeof(buf), _("Your message to %s did not get sent:"), data);
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
2368 do_error_dialog(buf, (reason < msgerrreasonlen) ? msgerrreason[reason] : _("No reason was given."), GAIM_ERROR);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2369
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2370 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2371 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2372
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2373 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
2374 struct gaim_connection *gc = sess->aux_data;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2375 va_list ap;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2376 fu16_t type1, type2;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2377 char *sn;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2378
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2379 va_start(ap, fr);
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2380 type1 = (fu16_t)va_arg(ap, unsigned int);
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2381 sn = va_arg(ap, char *);
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2382 type2 = (fu16_t)va_arg(ap, unsigned int);
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2383 va_end(ap);
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2384
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2385 debug_printf("Received an mtn from %s. Type1 is 0x%04d and type2 is 0x%04d.\n", sn, type1, type2);
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2386
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2387 switch (type2) {
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2388 case 0x0000: { /* Text has been cleared */
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2389 serv_got_typing_stopped(gc, sn);
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2390 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2391
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2392 case 0x0001: { /* Paused typing */
3768
bb6cc9d30511 [gaim-migrate @ 3907]
Nathan Walp <nwalp@pidgin.im>
parents: 3752
diff changeset
2393 serv_got_typing(gc, sn, 0, TYPED);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2394 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2395
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2396 case 0x0002: { /* Typing */
3768
bb6cc9d30511 [gaim-migrate @ 3907]
Nathan Walp <nwalp@pidgin.im>
parents: 3752
diff changeset
2397 serv_got_typing(gc, sn, 0, TYPING);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2398 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2399
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2400 default: {
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2401 printf("Received unknown typing notification type.\n");
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2402 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2403 }
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2404
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2405 return 1;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2406 }
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2407
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2408 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
2409 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2410 char *destn;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2411 fu16_t reason;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2412 char buf[1024];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2413
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2414 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2415 reason = (fu16_t)va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2416 destn = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2417 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2418
3574
b4839ec94817 [gaim-migrate @ 3673]
Luke Schierer <lschiere@pidgin.im>
parents: 3572
diff changeset
2419 snprintf(buf, sizeof(buf), _("User information for %s unavailable:"), destn);
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
2420 do_error_dialog(buf, (reason < msgerrreasonlen) ? msgerrreason[reason] : _("No reason was given."), GAIM_ERROR);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2421
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2422 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2423 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2424
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2425 static char *images(int flags) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2426 static char buf[1024];
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
2427 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
2428 (flags & AIM_FLAG_ACTIVEBUDDY) ? "<IMG SRC=\"ab_icon.gif\">" : "",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2429 (flags & AIM_FLAG_UNCONFIRMED) ? "<IMG SRC=\"dt_icon.gif\">" : "",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2430 (flags & AIM_FLAG_AOL) ? "<IMG SRC=\"aol_icon.gif\">" : "",
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
2431 (flags & AIM_FLAG_ICQ) ? "<IMG SRC=\"icq_icon.gif\">" : "",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2432 (flags & AIM_FLAG_ADMINISTRATOR) ? "<IMG SRC=\"admin_icon.gif\">" : "",
3079
e55c9a9cc4fc [gaim-migrate @ 3093]
Mark Doliner <markdoliner@pidgin.im>
parents: 3074
diff changeset
2433 (flags & AIM_FLAG_FREE) ? "<IMG SRC=\"free_icon.gif\">" : "",
e55c9a9cc4fc [gaim-migrate @ 3093]
Mark Doliner <markdoliner@pidgin.im>
parents: 3074
diff changeset
2434 (flags & AIM_FLAG_WIRELESS) ? "<IMG SRC=\"wireless_icon.gif\">" : "");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2435 return buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2436 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2437
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
2438
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2439 /* XXX This is horribly copied from ../../buddy.c. */
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2440 static char *caps_string(guint caps)
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2441 {
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2442 static char buf[512], *tmp;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2443 int count = 0, i = 0;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2444 guint bit = 1;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2445 while (bit <= 0x10000) {
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2446 if (bit & caps) {
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2447 switch (bit) {
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2448 case 0x1:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2449 tmp = _("Buddy Icon");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2450 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2451 case 0x2:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2452 tmp = _("Voice");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2453 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2454 case 0x4:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2455 tmp = _("IM Image");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2456 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2457 case 0x8:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2458 tmp = _("Chat");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2459 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2460 case 0x10:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2461 tmp = _("Get File");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2462 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2463 case 0x20:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2464 tmp = _("Send File");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2465 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2466 case 0x40:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2467 case 0x200:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2468 tmp = _("Games");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2469 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2470 case 0x80:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2471 tmp = _("Stocks");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2472 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2473 case 0x100:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2474 tmp = _("Send Buddy List");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2475 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2476 case 0x400:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2477 tmp = _("EveryBuddy Bug");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2478 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2479 case 0x800:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2480 tmp = _("AP User");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2481 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2482 case 0x1000:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2483 tmp = _("ICQ RTF");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2484 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2485 case 0x2000:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2486 tmp = _("Nihilist");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2487 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2488 case 0x4000:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2489 tmp = _("ICQ Server Relay");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2490 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2491 case 0x8000:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2492 tmp = _("ICQ Unknown");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2493 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2494 case 0x10000:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2495 tmp = _("Trillian Encryption");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2496 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2497 default:
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2498 tmp = NULL;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2499 break;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2500 }
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2501 if (tmp)
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2502 i += g_snprintf(buf + i, sizeof(buf) - i, "%s%s", (count ? ", " : ""),
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2503 tmp);
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2504 count++;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2505 }
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2506 bit <<= 1;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2507 }
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2508 return buf;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2509 }
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2510
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2511 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
2512 aim_userinfo_t *info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2513 char *prof_enc = NULL, *prof = NULL;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2514 fu16_t infotype;
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2515 char header[BUF_LONG];
2137
b0c18ea1dee8 [gaim-migrate @ 2147]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2131
diff changeset
2516 char legend[BUF_LONG];
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2517 struct gaim_connection *gc = sess->aux_data;
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2518 struct oscar_data *od = gc->proto_data;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2519 GSList *l = od->evilhack;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2520 gboolean evilhack = FALSE;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2521 va_list ap;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2522 gchar *membersince = NULL, *onlinesince = NULL, *idle = NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2523
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2524 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2525 info = va_arg(ap, aim_userinfo_t *);
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2526 infotype = (fu16_t)va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2527 prof_enc = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2528 prof = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2529 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2530
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
2531 if (!od->icq) {
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
2532 g_snprintf(legend, sizeof legend,
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
2533 _("<br><BODY BGCOLOR=WHITE><hr><I>Legend:</I><br><br>"
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
2534 "<IMG SRC=\"free_icon.gif\"> : Normal AIM User<br>"
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
2535 "<IMG SRC=\"aol_icon.gif\"> : AOL User <br>"
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
2536 "<IMG SRC=\"dt_icon.gif\"> : Trial AIM User <br>"
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
2537 "<IMG SRC=\"admin_icon.gif\"> : Administrator <br>"
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
2538 "<IMG SRC=\"ab_icon.gif\"> : ActiveBuddy Interactive Agent<br>"
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
2539 "<IMG SRC=\"wireless_icon.gif\"> : Wireless Device User<br>"));
3106
ad4878a02890 [gaim-migrate @ 3120]
Sean Egan <seanegan@pidgin.im>
parents: 3101
diff changeset
2540 } else {
ad4878a02890 [gaim-migrate @ 3120]
Sean Egan <seanegan@pidgin.im>
parents: 3101
diff changeset
2541 legend[0] = 0;
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
2542 }
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
2543
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2544 if (info->present & AIM_USERINFO_PRESENT_ONLINESINCE) {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2545 onlinesince = g_strdup_printf("Online Since : <B>%s</B><BR>\n",
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2546 asctime(localtime(&info->onlinesince)));
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2547 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2548
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2549 if (info->present & AIM_USERINFO_PRESENT_MEMBERSINCE) {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2550 membersince = g_strdup_printf("Member Since : <B>%s</B><BR>\n",
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2551 asctime(localtime(&info->membersince)));
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2552 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2553
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2554 if (info->present & AIM_USERINFO_PRESENT_IDLE) {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2555 idle = g_strdup_printf("Idle : <B>%d minutes</B>",
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2556 info->idletime);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2557 } else
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2558 idle = g_strdup("Idle: <B>Active</B>");
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2559
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2560 g_snprintf(header, sizeof header,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2561 _("Username : <B>%s</B> %s <BR>\n"
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2562 "Warning Level : <B>%d %%</B><BR>\n"
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2563 "%s"
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2564 "%s"
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2565 "%s<BR>\n"
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2566 "<HR><BR>\n"),
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2567 info->sn, images(info->flags),
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2568 info->warnlevel/10,
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2569 onlinesince ? onlinesince : "",
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2570 membersince ? membersince : "",
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2571 idle ? idle : "");
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2572
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2573 g_free(onlinesince);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2574 g_free(membersince);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2575 g_free(idle);
2773
3f711c709792 [gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2768
diff changeset
2576
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2577 while (l) {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2578 char *x = l->data;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2579 if (!strcmp(x, normalize(info->sn))) {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2580 evilhack = TRUE;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2581 g_free(x);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2582 od->evilhack = g_slist_remove(od->evilhack, x);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2583 break;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2584 }
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2585 l = l->next;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2586 }
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2587
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2588 if (infotype == AIM_GETINFO_AWAYMESSAGE) {
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2589 if (evilhack) {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2590 g_show_info_text(gc, info->sn, 2,
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2591 header,
2797
860827047ac5 [gaim-migrate @ 2810]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2791
diff changeset
2592 (prof && *prof) ? away_subs(prof, gc->username) :
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2593 _("<i>User has no away message</i>"),
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2594 legend, NULL);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2595 } else {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2596 g_show_info_text(gc, info->sn, 0,
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2597 header,
2797
860827047ac5 [gaim-migrate @ 2810]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2791
diff changeset
2598 (prof && *prof) ? away_subs(prof, gc->username) : NULL,
2799
250c4ae590a0 [gaim-migrate @ 2812]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2797
diff changeset
2599 (prof && *prof) ? "<BR><HR><BR>" : NULL,
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2600 NULL);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2601 }
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2602 } else if (infotype == AIM_GETINFO_CAPABILITIES) {
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2603 g_show_info_text(gc, info->sn, 2,
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2604 header,
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2605 "<i>", _("Client Capabilities: "),
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2606 caps_string(info->capabilities),
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2607 "</i>",
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2608 legend,
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
2609 NULL);
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2610 } else {
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2611 g_show_info_text(gc, info->sn, 1,
2797
860827047ac5 [gaim-migrate @ 2810]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2791
diff changeset
2612 (prof && *prof) ? away_subs(prof, gc->username) :
860827047ac5 [gaim-migrate @ 2810]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2791
diff changeset
2613 _("<i>No Information Provided</i>"),
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2614 legend,
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2615 NULL);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
2616 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2617
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2618 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2619 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2620
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2621 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
2622 char *msg;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2623 fu16_t id;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2624 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2625 char buildbuf[150];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2626
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2627 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2628 id = (fu16_t)va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2629 msg = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2630 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2631
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2632 aim_getbuildstring(buildbuf, sizeof(buildbuf));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2633
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2634 debug_printf("MOTD: %s (%d)\n", msg ? msg : "Unknown", id);
2092
f56061012e3c [gaim-migrate @ 2102]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
2635 if (id < 4)
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
2636 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
2637
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2638 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2639 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2640
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2641 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
2642 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2643 fu16_t type;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2644 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2645 struct oscar_data *odata = (struct oscar_data *)gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2646
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2647 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2648 type = (fu16_t)va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2649
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2650 switch(type) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2651 case 0x0002: {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2652 fu8_t maxrooms;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2653 struct aim_chat_exchangeinfo *exchanges;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2654 int exchangecount, i;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2655
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2656 maxrooms = (fu8_t)va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2657 exchangecount = va_arg(ap, int);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2658 exchanges = va_arg(ap, struct aim_chat_exchangeinfo *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2659 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2660
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2661 debug_printf("chat info: Chat Rights:\n");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2662 debug_printf("chat info: \tMax Concurrent Rooms: %d\n", maxrooms);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2663 debug_printf("chat info: \tExchange List: (%d total)\n", exchangecount);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2664 for (i = 0; i < exchangecount; i++)
2931
64e34bfbb7c7 [gaim-migrate @ 2944]
Adam Fritzler <mid@auk.cx>
parents: 2920
diff changeset
2665 debug_printf("chat info: \t\t%d %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
2666 while (odata->create_rooms) {
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
2667 struct create_room *cr = odata->create_rooms->data;
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
2668 debug_printf("creating room %s\n", cr->name);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
2669 aim_chatnav_createroom(sess, fr->conn, cr->name, cr->exchange);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
2670 g_free(cr->name);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
2671 odata->create_rooms = g_slist_remove(odata->create_rooms, cr);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
2672 g_free(cr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2673 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2674 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2675 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2676 case 0x0008: {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2677 char *fqcn, *name, *ck;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2678 fu16_t instance, flags, maxmsglen, maxoccupancy, unknown, exchange;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2679 fu8_t createperms;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2680 fu32_t createtime;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2681
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2682 fqcn = va_arg(ap, char *);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2683 instance = (fu16_t)va_arg(ap, unsigned int);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2684 exchange = (fu16_t)va_arg(ap, unsigned int);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2685 flags = (fu16_t)va_arg(ap, unsigned int);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2686 createtime = va_arg(ap, fu32_t);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2687 maxmsglen = (fu16_t)va_arg(ap, unsigned int);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2688 maxoccupancy = (fu16_t)va_arg(ap, unsigned int);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2689 createperms = (fu8_t)va_arg(ap, int);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2690 unknown = (fu16_t)va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2691 name = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2692 ck = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2693 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2694
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2695 debug_printf("created room: %s %d %d %d %lu %d %d %d %d %s %s\n",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2696 fqcn,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2697 exchange, instance, flags,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2698 createtime,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2699 maxmsglen, maxoccupancy, createperms, unknown,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2700 name, ck);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2701 aim_chat_join(odata->sess, odata->conn, exchange, ck, instance);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2702 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2703 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2704 default:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2705 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2706 debug_printf("chatnav info: unknown type (%04x)\n", type);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2707 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2708 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2709 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2710 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2711
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2712 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
2713 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2714 int count, i;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2715 aim_userinfo_t *info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2716 struct gaim_connection *g = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2717
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2718 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2719
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2720 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2721 count = va_arg(ap, int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2722 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2723 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2724
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2725 c = find_oscar_chat_by_conn(g, fr->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2726 if (!c)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2727 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2728
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2729 for (i = 0; i < count; i++)
3708
20ba51ab2c7f [gaim-migrate @ 3841]
Jonas Birme <jonas.birme@fro.se>
parents: 3694
diff changeset
2730 add_chat_buddy(c->cnv, info[i].sn, NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2731
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2732 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2733 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2734
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2735 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
2736 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2737 int count, i;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2738 aim_userinfo_t *info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2739 struct gaim_connection *g = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2740
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2741 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2742
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2743 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2744 count = va_arg(ap, int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2745 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2746 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2747
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2748 c = find_oscar_chat_by_conn(g, fr->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2749 if (!c)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2750 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2751
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2752 for (i = 0; i < count; i++)
2820
4e07191ca3d0 [gaim-migrate @ 2833]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2817
diff changeset
2753 remove_chat_buddy(c->cnv, info[i].sn, NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2754
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2755 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2756 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2757
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2758 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
2759 va_list ap;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2760 aim_userinfo_t *userinfo;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2761 struct aim_chat_roominfo *roominfo;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2762 char *roomname;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2763 int usercount;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2764 char *roomdesc;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2765 fu16_t unknown_c9, unknown_d2, unknown_d5, maxmsglen, maxvisiblemsglen;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2766 fu32_t creationtime;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2767 struct gaim_connection *gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2768 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
2769
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2770 va_start(ap, fr);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2771 roominfo = va_arg(ap, struct aim_chat_roominfo *);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2772 roomname = va_arg(ap, char *);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2773 usercount= va_arg(ap, int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2774 userinfo = va_arg(ap, aim_userinfo_t *);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2775 roomdesc = va_arg(ap, char *);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2776 unknown_c9 = (fu16_t)va_arg(ap, int);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2777 creationtime = (fu32_t)va_arg(ap, unsigned long);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2778 maxmsglen = (fu16_t)va_arg(ap, int);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2779 unknown_d2 = (fu16_t)va_arg(ap, int);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2780 unknown_d5 = (fu16_t)va_arg(ap, int);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2781 maxvisiblemsglen = (fu16_t)va_arg(ap, int);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2782 va_end(ap);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2783
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2784 debug_printf("inside chat_info_update (maxmsglen = %d, maxvislen = %d)\n",
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2785 maxmsglen, maxvisiblemsglen);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2786
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2787 ccon->maxlen = maxmsglen;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2788 ccon->maxvis = maxvisiblemsglen;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
2789
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2790 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2791 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2792
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2793 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
2794 va_list ap;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2795 aim_userinfo_t *info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2796 char *msg;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2797 struct gaim_connection *gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2798 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
2799 char *tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2800
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2801 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2802 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2803 msg = va_arg(ap, char *);
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 tmp = g_malloc(BUF_LONG);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2806 g_snprintf(tmp, BUF_LONG, "%s", msg);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2807 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
2808 g_free(tmp);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2809
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2810 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2811 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2812
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2813 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
2814 va_list ap;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2815 struct gaim_connection *gc = sess->aux_data;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2816 struct aim_emailinfo *emailinfo;
3725
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
2817 int havenewmail;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2818
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2819 va_start(ap, fr);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2820 emailinfo = va_arg(ap, struct aim_emailinfo *);
3725
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
2821 havenewmail = va_arg(ap, int);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2822 va_end(ap);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2823
3725
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
2824 if (emailinfo) {
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
2825 debug_printf("Got email info. webmail address for screenname@%s is %s, new email: %hd, number new: %d, flag is %d, havenewmail is %d\n", emailinfo->domain, emailinfo->url, emailinfo->unread, emailinfo->nummsgs, emailinfo->flag, havenewmail);
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
2826 if (emailinfo->unread) {
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
2827 if (havenewmail)
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
2828 connection_has_mail(gc, emailinfo->nummsgs ? emailinfo->nummsgs : -1, NULL, NULL, emailinfo->url);
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
2829 } else
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2830 connection_has_mail(gc, 0, NULL, NULL, emailinfo->url);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2831 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2832
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2833 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2834 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2835
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2836 /*
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2837 * 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
2838 */
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2839 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
2840 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2841 fu16_t type;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2842 char *sn;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2843
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2844 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2845 type = (fu16_t)va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2846 sn = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2847 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2848
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2849 debug_printf("Sent message to %s.\n", sn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2850
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2851 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2852 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2853
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2854 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
2855 static const char *codes[5] = {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2856 "invalid",
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2857 "change",
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2858 "warning",
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2859 "limit",
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2860 "limit cleared",
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2861 };
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2862 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2863 fu16_t code, rateclass;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2864 fu32_t windowsize, clear, alert, limit, disconnect, currentavg, maxavg;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2865
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2866 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2867 code = (fu16_t)va_arg(ap, unsigned int);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2868 rateclass= (fu16_t)va_arg(ap, unsigned int);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2869 windowsize = (fu32_t)va_arg(ap, unsigned long);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2870 clear = (fu32_t)va_arg(ap, unsigned long);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2871 alert = (fu32_t)va_arg(ap, unsigned long);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2872 limit = (fu32_t)va_arg(ap, unsigned long);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2873 disconnect = (fu32_t)va_arg(ap, unsigned long);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2874 currentavg = (fu32_t)va_arg(ap, unsigned long);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2875 maxavg = (fu32_t)va_arg(ap, unsigned long);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2876 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2877
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2878 debug_printf("rate %s (paramid 0x%04lx): curavg = %ld, maxavg = %ld, alert at %ld, "
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2879 "clear warning at %ld, limit at %ld, disconnect at %ld (window size = %ld)\n",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2880 (code < 5) ? codes[code] : codes[0],
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2881 rateclass,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2882 currentavg, maxavg,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2883 alert, clear,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2884 limit, disconnect,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2885 windowsize);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2886
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2887 /* XXX fix these values */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2888 if (code == AIM_RATE_CODE_CHANGE) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2889 if (currentavg >= clear)
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2890 aim_conn_setlatency(fr->conn, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2891 } else if (code == AIM_RATE_CODE_WARNING) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2892 aim_conn_setlatency(fr->conn, windowsize/4);
2909
2935ea93dfe7 [gaim-migrate @ 2922]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2906
diff changeset
2893 } else if (code == AIM_RATE_CODE_LIMIT) {
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
2894 do_error_dialog(_("Rate limiting error."),
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
2895 _("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
2896 "Please wait 10 seconds and try again."), GAIM_ERROR);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2897 aim_conn_setlatency(fr->conn, windowsize/2);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2898 } else if (code == AIM_RATE_CODE_CLEARLIMIT) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2899 aim_conn_setlatency(fr->conn, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2900 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2901
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2902 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2903 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2904
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2905 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
2906 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2907 fu16_t newevil;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2908 aim_userinfo_t *userinfo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2909 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2910
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2911 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2912 newevil = (fu16_t)va_arg(ap, unsigned int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2913 userinfo = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2914 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2915
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2916 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
2917
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2918 return 1;
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
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
2921 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
2922 va_list ap;
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
2923 aim_userinfo_t *info;
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
2924 struct gaim_connection *gc = sess->aux_data;
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
2925
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
2926 va_start(ap, fr);
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
2927 info = va_arg(ap, aim_userinfo_t *);
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
2928 va_end(ap);
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
2929
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
2930 gc->evil = info->warnlevel/10;
2698
29d3c1727fd1 [gaim-migrate @ 2711]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2689
diff changeset
2931 /* gc->correction_time = (info->onlinesince - gc->login_time); */
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
2932
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
2933 return 1;
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
2934 }
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
2935
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2936 static int conninitdone_bos(aim_session_t *sess, aim_frame_t *fr, ...) {
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
2937 struct gaim_connection *gc = sess->aux_data;
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
2938 struct oscar_data *od = gc->proto_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2939
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
2940 aim_reqpersonalinfo(sess, fr->conn);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2941 aim_bos_reqlocaterights(sess, fr->conn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2942 aim_bos_reqbuddyrights(sess, fr->conn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2943
2673
84bb25b76700 [gaim-migrate @ 2686]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2672
diff changeset
2944 aim_reqicbmparams(sess);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2945
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2946 aim_bos_reqrights(sess, fr->conn);
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
2947 if (od->icq) {
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
2948 aim_bos_setgroupperm(sess, fr->conn, AIM_FLAG_ALLUSERS);
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
2949 aim_bos_setprivacyflags(sess, fr->conn, AIM_PRIVFLAGS_ALLOWIDLE |
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
2950 AIM_PRIVFLAGS_ALLOWMEMBERSINCE);
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
2951 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2952
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2953 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2954 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2955
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2956 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
2957 struct gaim_connection *gc = sess->aux_data;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2958 struct oscar_data *od = gc->proto_data;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2959
2672
5c9b7617a1f3 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
2960 aim_clientready(sess, fr->conn);
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2961 debug_printf("connected to admin\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2962
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2963 if (od->chpass) {
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2964 debug_printf("changing password\n");
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
2965 aim_admin_changepasswd(sess, fr->conn, od->newp, od->oldp);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2966 g_free(od->oldp);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
2967 od->oldp = NULL;
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2968 g_free(od->newp);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
2969 od->newp = NULL;
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2970 od->chpass = FALSE;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2971 }
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
2972 if (od->setnick) {
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
2973 debug_printf("formatting screenname\n");
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
2974 aim_admin_setnick(sess, fr->conn, od->newsn);
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
2975 g_free(od->newsn);
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
2976 od->newsn = NULL;
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
2977 od->setnick = FALSE;
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
2978 }
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2979 if (od->conf) {
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2980 debug_printf("confirming account\n");
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
2981 aim_admin_reqconfirm(sess, fr->conn);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2982 od->conf = FALSE;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2983 }
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2984 if (od->reqemail) {
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2985 debug_printf("requesting email\n");
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
2986 aim_admin_getinfo(sess, fr->conn, 0x0011);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2987 od->reqemail = FALSE;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2988 }
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
2989 if (od->setemail) {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
2990 debug_printf("setting email\n");
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
2991 aim_admin_setemail(sess, fr->conn, od->email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
2992 g_free(od->email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
2993 od->setemail = FALSE;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
2994 }
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2995
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2996 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2997 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2998
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2999 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
3000 struct aim_icbmparameters *params;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3001 va_list ap;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3002
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3003 va_start(ap, fr);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3004 params = va_arg(ap, struct aim_icbmparameters *);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3005 va_end(ap);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3006
2427
761801814c88 [gaim-migrate @ 2440]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2421
diff changeset
3007 /* evidently this crashes on solaris. i have no clue why
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3008 debug_printf("ICBM Parameters: maxchannel = %d, default flags = 0x%08lx, max msg len = %d, "
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3009 "max sender evil = %f, max receiver evil = %f, min msg interval = %ld\n",
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3010 params->maxchan, params->flags, params->maxmsglen,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3011 ((float)params->maxsenderwarn)/10.0, ((float)params->maxrecverwarn)/10.0,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3012 params->minmsginterval);
2427
761801814c88 [gaim-migrate @ 2440]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2421
diff changeset
3013 */
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3014
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3015 /* Maybe senderwarn and recverwarn should be user preferences... */
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3016 params->flags = 0x0000000b;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3017 params->maxmsglen = 8000;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3018 params->minmsginterval = 0;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3019
2673
84bb25b76700 [gaim-migrate @ 2686]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2672
diff changeset
3020 aim_seticbmparam(sess, params);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3021
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3022 return 1;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3023 }
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3024
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3025 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
3026 {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3027 va_list ap;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3028 fu16_t maxsiglen;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3029 struct gaim_connection *gc = sess->aux_data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3030 struct oscar_data *odata = (struct oscar_data *)gc->proto_data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3031
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3032 va_start(ap, fr);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3033 maxsiglen = va_arg(ap, int);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3034 va_end(ap);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3035
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3036 debug_printf("locate rights: max sig len = %d\n", maxsiglen);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3037
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3038 odata->rights.maxsiglen = odata->rights.maxawaymsglen = (guint)maxsiglen;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3039
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
3040 if (odata->icq)
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
3041 aim_bos_setprofile(sess, fr->conn, NULL, NULL, caps_icq);
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
3042 else
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
3043 aim_bos_setprofile(sess, fr->conn, gc->user->user_info, NULL, caps_aim);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3044
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3045 return 1;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3046 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3047
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3048 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
3049 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3050 fu16_t maxbuddies, maxwatchers;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3051 struct gaim_connection *gc = sess->aux_data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3052 struct oscar_data *odata = (struct oscar_data *)gc->proto_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3053
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3054 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3055 maxbuddies = (fu16_t)va_arg(ap, unsigned int);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3056 maxwatchers = (fu16_t)va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3057 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3058
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3059 debug_printf("buddy list rights: Max buddies = %d / Max watchers = %d\n", maxbuddies, maxwatchers);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3060
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3061 odata->rights.maxbuddies = (guint)maxbuddies;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3062 odata->rights.maxwatchers = (guint)maxwatchers;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3063
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3064 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3065 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3066
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3067 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
3068 fu16_t maxpermits, maxdenies;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3069 va_list ap;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3070 struct gaim_connection *gc = sess->aux_data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3071 struct oscar_data *odata = (struct oscar_data *)gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3072
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3073 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3074 maxpermits = (fu16_t)va_arg(ap, unsigned int);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3075 maxdenies = (fu16_t)va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3076 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3077
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3078 debug_printf("BOS rights: Max permit = %d / Max deny = %d\n", maxpermits, maxdenies);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3079
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3080 odata->rights.maxpermits = (guint)maxpermits;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3081 odata->rights.maxdenies = (guint)maxdenies;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3082
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3083 account_online(gc);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3084 serv_finish_login(gc);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3085
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3086 if (bud_list_cache_exists(gc))
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3087 do_import(gc, NULL);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3088
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3089 debug_printf("buddy list loaded\n");
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3090
2672
5c9b7617a1f3 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
3091 aim_clientready(sess, fr->conn);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3092
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3093 aim_icq_reqofflinemsgs(sess);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3094
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3095 aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_CHATNAV);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
3096 aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_EMAIL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3097
3109
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
3098 if (!odata->icq) {
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
3099 debug_printf("ssi: requesting ssi list\n");
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3100 aim_ssi_reqrights(sess, fr->conn);
3109
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
3101 aim_ssi_reqdata(sess, fr->conn, sess->ssi.timestamp, sess->ssi.revision);
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
3102 }
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3103
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3104 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3105 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3106
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3107 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
3108 va_list ap;
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3109 struct aim_icq_offlinemsg *msg;
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3110 struct gaim_connection *gc = sess->aux_data;
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3111
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3112 va_start(ap, fr);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3113 msg = va_arg(ap, struct aim_icq_offlinemsg *);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3114 va_end(ap);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3115
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3116 debug_printf("Received offline message of type 0x%04x\n", msg->type);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3117
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3118 switch (msg->type) {
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3119 case 0x0001: { /* Basic offline message */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3120 char sender[32];
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3121 char *dialog_msg = g_strdup(msg->msg);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3122 time_t t = get_time(msg->year, msg->month, msg->day, msg->hour, msg->minute, 0);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3123 g_snprintf(sender, sizeof(sender), "%lu", msg->sender);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3124 strip_linefeed(dialog_msg);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3125 serv_got_im(gc, sender, dialog_msg, 0, t, -1);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3126 g_free(dialog_msg);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3127 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3128
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3129 case 0x0006: { /* Authorization request */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3130 gaim_icq_authask(gc, msg->sender, msg->msg);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3131 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3132
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3133 case 0x0007: { /* Someone has denied you authorization */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3134 char *dialog_msg;
3159
15816c95c61c [gaim-migrate @ 3175]
Sean Egan <seanegan@pidgin.im>
parents: 3150
diff changeset
3135 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"), msg->sender, msg->msg ? msg->msg : _("No reason given."));
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3136 do_error_dialog(_("ICQ Authorization denied"), dialog_msg, GAIM_ERROR);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3137 g_free(dialog_msg);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3138 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3139
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3140 case 0x0008: { /* Someone has granted you authorization */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3141 char *dialog_msg;
3159
15816c95c61c [gaim-migrate @ 3175]
Sean Egan <seanegan@pidgin.im>
parents: 3150
diff changeset
3142 dialog_msg = g_strdup_printf(_("The user %lu has granted your request to add them to your contact list."), msg->sender);
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3143 do_error_dialog(_("ICQ Authorization Granted"), dialog_msg, GAIM_INFO);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3144 g_free(dialog_msg);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3145 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3146
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3147 case 0x0012: {
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3148 /* Ack for authorizing/denying someone. Or possibly an ack for sending any system notice */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3149 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3150
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3151 default: {
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3152 debug_printf("unknown offline message type 0x%04x\n", msg->type);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3153 }
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3154 }
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3155
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3156 return 1;
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3157 }
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3158
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3159 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
3160 {
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3161 aim_icq_ackofflinemsgs(sess);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3162 return 1;
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3163 }
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
3164
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3165 static int gaim_simpleinfo(aim_session_t *sess, aim_frame_t *fr, ...)
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3166 {
2773
3f711c709792 [gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2768
diff changeset
3167 struct gaim_connection *gc = sess->aux_data;
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3168 struct buddy *budlight;
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3169 va_list ap;
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3170 struct aim_icq_simpleinfo *info;
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3171 char buf[16 * 1024];
2773
3f711c709792 [gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2768
diff changeset
3172 char who[16];
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3173
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3174 va_start(ap, fr);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3175 info = va_arg(ap, struct aim_icq_simpleinfo *);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3176 va_end(ap);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3177
2773
3f711c709792 [gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2768
diff changeset
3178 g_snprintf(who, sizeof who, "%lu", info->uin);
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3179 g_snprintf(buf, sizeof buf,
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3180 "<B>UIN:</B> %lu<BR>"
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3181 "<B>Nick:</B> %s<BR>"
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3182 "<B>Name:</B> %s %s<BR>"
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3183 "<B>Email:</B> %s<BR>\n",
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3184 info->uin,
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3185 info->nick,
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3186 info->first, info->last,
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3187 info->email);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3188
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3189 /* 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
3190 * 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
3191 * 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
3192 * 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
3193 * 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
3194 * 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
3195 if ((budlight = find_buddy(gc, who))) {
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3196 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
3197 if (budlight->caps & AIM_CAPS_ICQSERVERRELAY)
e7767f467498 [gaim-migrate @ 3288]
Mark Doliner <markdoliner@pidgin.im>
parents: 3267
diff changeset
3198 g_show_info_text(gc, who, 0, buf, NULL);
e7767f467498 [gaim-migrate @ 3288]
Mark Doliner <markdoliner@pidgin.im>
parents: 3267
diff changeset
3199 else {
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3200 char *state_msg = gaim_icq_status((budlight->uc & 0xffff0000) >> 16);
3270
e7767f467498 [gaim-migrate @ 3288]
Mark Doliner <markdoliner@pidgin.im>
parents: 3267
diff changeset
3201 g_show_info_text(gc, who, 2, buf, "<B>Status:</B> ", state_msg, "<BR>\n<HR><BR><I>Remote client does not support sending status messages.</I><BR>\n", NULL);
e7767f467498 [gaim-migrate @ 3288]
Mark Doliner <markdoliner@pidgin.im>
parents: 3267
diff changeset
3202 free(state_msg);
e7767f467498 [gaim-migrate @ 3288]
Mark Doliner <markdoliner@pidgin.im>
parents: 3267
diff changeset
3203 }
e7767f467498 [gaim-migrate @ 3288]
Mark Doliner <markdoliner@pidgin.im>
parents: 3267
diff changeset
3204 } else {
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3205 char *state_msg = gaim_icq_status((budlight->uc & 0xffff0000) >> 16);
3270
e7767f467498 [gaim-migrate @ 3288]
Mark Doliner <markdoliner@pidgin.im>
parents: 3267
diff changeset
3206 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
3207 free(state_msg);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3208 }
3270
e7767f467498 [gaim-migrate @ 3288]
Mark Doliner <markdoliner@pidgin.im>
parents: 3267
diff changeset
3209 } else
e7767f467498 [gaim-migrate @ 3288]
Mark Doliner <markdoliner@pidgin.im>
parents: 3267
diff changeset
3210 g_show_info_text(gc, who, 2, buf, NULL);
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3211
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3212 return 1;
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3213 }
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3214
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3215 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
3216 {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3217 char *msg, *url;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3218 fu16_t wid, hei, delay;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3219 va_list ap;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3220
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3221 va_start(ap, fr);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3222 msg = va_arg(ap, char *);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3223 url = va_arg(ap, char *);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3224 wid = (fu16_t)va_arg(ap, int);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3225 hei = (fu16_t)va_arg(ap, int);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3226 delay = (fu16_t)va_arg(ap, int);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3227 va_end(ap);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3228
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3229 serv_got_popup(msg, url, wid, hei);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3230
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3231 return 1;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3232 }
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
3233
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3234 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
3235 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3236 char *address, *SNs;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3237 int i, num;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3238 char *buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3239 int at = 0, len;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3240
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3241 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3242 address = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3243 num = va_arg(ap, int);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3244 SNs = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3245 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3246
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3247 len = num * (MAXSNLEN + 1) + 1024;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3248 buf = g_malloc(len);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3249 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
3250 for (i = 0; i < num; i++)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3251 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
3252 g_show_info_text(NULL, NULL, 2, buf, NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3253 g_free(buf);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3254
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3255 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3256 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3257
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3258 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
3259 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3260 char *address;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3261 char buf[BUF_LONG];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3262
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3263 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3264 address = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3265 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3266
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3267 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
3268 do_error_dialog(buf, NULL, GAIM_ERROR);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3269
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3270 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3271 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3272
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3273 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
3274 fu16_t status;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3275 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3276 char msg[256];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3277 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3278
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3279 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3280 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
3281 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3282
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3283 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
3284 status ? "unknown" : "email sent");
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3285 if (!status) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3286 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
3287 gc->username);
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3288 do_error_dialog("Account Confirmation Requested", msg, GAIM_INFO);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3289 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3290
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3291 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3292 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3293
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3294 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
3295 struct gaim_connection *gc = sess->aux_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3296 va_list ap;
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3297 fu16_t perms, err;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3298 char *url, *sn, *email;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3299 int change;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3300
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3301 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3302 change = va_arg(ap, int);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3303 perms = (fu16_t)va_arg(ap, unsigned int);
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3304 err = (fu16_t)va_arg(ap, unsigned int);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3305 url = va_arg(ap, char *);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3306 sn = va_arg(ap, char *);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3307 email = va_arg(ap, char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3308 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3309
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3310 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
3311 change ? "change" : "request", perms, err, url, sn, email);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3312
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3313 if (err && url) {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3314 char *dialog_msg;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3315 char *dialog_top = g_strdup_printf(_("Error Changing Account Info"));
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3316 switch (err) {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3317 case 0x0001: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3318 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
3319 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3320 case 0x0006: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3321 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
3322 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3323 case 0x000b: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3324 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
3325 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3326 case 0x001d: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3327 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
3328 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3329 case 0x0021: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3330 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
3331 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3332 case 0x0023: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3333 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
3334 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3335 default: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3336 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unknown error."), err);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3337 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3338 }
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3339 do_error_dialog(dialog_top, dialog_msg, GAIM_ERROR);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3340 g_free(dialog_top);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3341 g_free(dialog_msg);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3342 return 1;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3343 }
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3344
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3345 if (sn) {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3346 char *dialog_msg = g_strdup_printf(_("Your screen name is currently formated as follows:\n%s"), sn);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3347 do_error_dialog("Account Info", dialog_msg, GAIM_INFO);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3348 g_free(dialog_msg);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3349 }
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3350
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3351 if (email) {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3352 char *dialog_msg = g_strdup_printf(_("The email address for %s is %s"), gc->username, email);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3353 do_error_dialog("Account Info", dialog_msg, GAIM_INFO);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
3354 g_free(dialog_msg);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3355 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3356
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3357 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3358 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3359
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3360 static void oscar_keepalive(struct gaim_connection *gc) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3361 struct oscar_data *odata = (struct oscar_data *)gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3362 aim_flap_nop(odata->sess, odata->conn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3363 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3364
3001
9fc89391c8fa [gaim-migrate @ 3014]
Sean Egan <seanegan@pidgin.im>
parents: 3000
diff changeset
3365 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
3366 struct oscar_data *odata = (struct oscar_data *)gc->proto_data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3367 struct direct_im *dim = find_direct_im(odata, name);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3368 if (dim)
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3369 aim_send_typing(odata->sess, dim->conn, typing);
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3370 else {
3600
776215788f43 [gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents: 3596
diff changeset
3371 char *who = normalize(name);
776215788f43 [gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents: 3596
diff changeset
3372 if (g_hash_table_lookup(odata->supports_tn, who)) {
3596
94fcf584c358 [gaim-migrate @ 3698]
Mark Doliner <markdoliner@pidgin.im>
parents: 3595
diff changeset
3373 if (typing == TYPING)
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3374 aim_mtn_send(odata->sess, 0x0001, name, 0x0002);
3596
94fcf584c358 [gaim-migrate @ 3698]
Mark Doliner <markdoliner@pidgin.im>
parents: 3595
diff changeset
3375 else if (typing == TYPED)
94fcf584c358 [gaim-migrate @ 3698]
Mark Doliner <markdoliner@pidgin.im>
parents: 3595
diff changeset
3376 aim_mtn_send(odata->sess, 0x0001, name, 0x0001);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3377 else
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3378 aim_mtn_send(odata->sess, 0x0001, name, 0x0000);
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3379 }
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3380 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3381 return 0;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3382 }
3048
22ccf641f97b [gaim-migrate @ 3061]
Sean Egan <seanegan@pidgin.im>
parents: 3044
diff changeset
3383 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
3384
3033
1f078ab46e76 [gaim-migrate @ 3046]
Sean Egan <seanegan@pidgin.im>
parents: 3031
diff changeset
3385 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
3386 struct oscar_data *odata = (struct oscar_data *)gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3387 struct direct_im *dim = find_direct_im(odata, name);
2303
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
3388 int ret = 0;
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3389 GError *err = NULL;
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
3390
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3391 if (dim) {
3009
7cb524607c18 [gaim-migrate @ 3022]
Sean Egan <seanegan@pidgin.im>
parents: 3008
diff changeset
3392 if (dim->connected) { /* If we're not connected yet, send through server */
3034
9173391f9266 [gaim-migrate @ 3047]
Sean Egan <seanegan@pidgin.im>
parents: 3033
diff changeset
3393 ret = aim_send_im_direct(odata->sess, dim->conn, message, len == -1 ? strlen(message) : len);
3009
7cb524607c18 [gaim-migrate @ 3022]
Sean Egan <seanegan@pidgin.im>
parents: 3008
diff changeset
3394 if (ret == 0)
7cb524607c18 [gaim-migrate @ 3022]
Sean Egan <seanegan@pidgin.im>
parents: 3008
diff changeset
3395 return 1;
7cb524607c18 [gaim-migrate @ 3022]
Sean Egan <seanegan@pidgin.im>
parents: 3008
diff changeset
3396 else return ret;
7cb524607c18 [gaim-migrate @ 3022]
Sean Egan <seanegan@pidgin.im>
parents: 3008
diff changeset
3397 }
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3398 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
3399 } else if (len != -1) {
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
3400 /* Trying to send an IM image outside of a direct connection. */
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
3401 oscar_ask_direct_im(gc, name);
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
3402 return -ENOTCONN;
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
3403 }
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3404 if (imflags & IM_FLAG_AWAY) {
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3405 ret = aim_send_im(odata->sess, name, AIM_IMFLAGS_AWAY, message);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3406 } else {
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3407 struct aim_sendimext_args args;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3408 GSList *h = odata->hasicons;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3409 struct icon_req *ir = NULL;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3410 char *who = normalize(name);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3411 struct stat st;
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3412 int i, len;
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3413
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3414 args.flags = AIM_IMFLAGS_ACK | AIM_IMFLAGS_CUSTOMFEATURES;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3415 if (odata->icq)
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3416 args.flags |= AIM_IMFLAGS_OFFLINE;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3417
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3418 args.features = gaim_features;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3419 args.featureslen = sizeof(gaim_features);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3420
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3421 while (h) {
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3422 ir = h->data;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3423 if (ir->request && !strcmp(who, ir->user))
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3424 break;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3425 h = h->next;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3426 }
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3427 if (h) {
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3428 ir->request = FALSE;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3429 args.flags |= AIM_IMFLAGS_BUDDYREQ;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3430 debug_printf("sending buddy icon request with message\n");
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3431 }
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3432
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3433 if (gc->user->iconfile[0] && !stat(gc->user->iconfile, &st)) {
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3434 FILE *file = fopen(gc->user->iconfile, "r");
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3435 if (file) {
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3436 char *buf = g_malloc(st.st_size);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3437 fread(buf, 1, st.st_size, file);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3438
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3439 args.iconlen = st.st_size;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3440 args.iconsum = aim_iconsum(buf, st.st_size);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3441 args.iconstamp = st.st_mtime;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3442
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3443 args.flags |= AIM_IMFLAGS_HASICON;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3444 debug_printf("Claiming to have an icon.\n");
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3445
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3446 fclose(file);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3447 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3448 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3449 }
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3450
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3451 args.destsn = name;
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3452
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3453 /* Determine how we can send this message. Per the
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3454 * warnings elsewhere in this file, these little
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3455 * checks determine the simplest encoding we can use
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3456 * for a given message send using it. */
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3457 len = strlen(message);
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3458 i = 0;
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3459 while (message[i]) {
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3460 if ((unsigned char)message[i] > 0x7f) {
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3461 /* not ASCII! */
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3462 args.flags |= AIM_IMFLAGS_ISO_8859_1;
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3463 break;
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3464 }
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3465 i++;
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3466 }
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3467 while (message[i]) {
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3468 /* ISO-8859-1 is 0x00-0xbf in the first byte
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3469 * followed by 0xc0-0xc3 in the second */
3850
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
3470 if ((unsigned char)message[i] < 0x80) {
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3471 i++;
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3472 continue;
3850
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
3473 } else if (((unsigned char)message[i] & 0xfc) == 0xc0 &&
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
3474 ((unsigned char)message[i + 1] & 0xc0) == 0x80) {
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
3475 i += 2;
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
3476 continue;
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3477 }
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3478 args.flags ^= AIM_IMFLAGS_ISO_8859_1;
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3479 args.flags |= AIM_IMFLAGS_UNICODE;
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3480 break;
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3481 }
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3482 if (args.flags & AIM_IMFLAGS_UNICODE) {
3850
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
3483 debug_printf ("Sending Unicode IM\n");
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3484 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
3485 if (err) {
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3486 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
3487 debug_printf("This really shouldn't happen!\n");
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3488 /* We really shouldn't try to send the
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3489 * IM now, but I'm not sure what to do */
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3490 }
3850
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
3491 } else if (args.flags & AIM_IMFLAGS_ISO_8859_1) {
978325265144 [gaim-migrate @ 4002]
Ethan Blanton <elb@pidgin.im>
parents: 3783
diff changeset
3492 debug_printf ("Sending ISO-8859-1 IM\n");
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3493 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
3494 if (err) {
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3495 debug_printf("conversion error: %s\n", err->message);
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3496 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
3497 args.flags ^= AIM_IMFLAGS_ISO_8859_1 | AIM_IMFLAGS_UNICODE;
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3498 len = strlen(message);
3659
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3499 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
3500 if (err) {
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3501 debug_printf ("Error in unicode fallback: %s\n", err->message);
95f6d95134cb [gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents: 3643
diff changeset
3502 }
3642
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3503 }
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3504 } else {
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3505 args.msg = message;
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3506 }
707a07e64ea3 [gaim-migrate @ 3766]
Luke Schierer <lschiere@pidgin.im>
parents: 3639
diff changeset
3507 args.msglen = len;
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3508
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
3509 ret = aim_send_im_ext(odata->sess, &args);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3510 }
2303
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
3511 if (ret >= 0)
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
3512 return 1;
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
3513 return ret;
2086
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
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3516 static void oscar_get_info(struct gaim_connection *g, char *name) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3517 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3518 if (odata->icq)
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3519 aim_icq_getsimpleinfo(odata->sess, name);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
3520 else
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3521 /* 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
3522 * 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
3523 * insert in the middle. i hate people. */
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3524 aim_getinfo(odata->sess, odata->conn, name, AIM_GETINFO_AWAYMESSAGE);
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3525 }
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
3526
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3527 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
3528 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3529 if (odata->icq) {
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3530 struct buddy *budlight = find_buddy(g, who);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3531 if (budlight)
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3532 if ((budlight->uc & 0xffff0000) >> 16)
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3533 if (budlight->caps & AIM_CAPS_ICQSERVERRELAY)
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3534 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
3535 else
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3536 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
3537 else
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3538 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
3539 else
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3540 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
3541 } else
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3542 aim_getinfo(odata->sess, odata->conn, who, AIM_GETINFO_GENERALINFO);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3543 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3544
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3545 static void oscar_get_caps(struct gaim_connection *g, char *name) {
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3546 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3547 aim_getinfo(odata->sess, odata->conn, name, AIM_GETINFO_CAPABILITIES);
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3548 }
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
3549
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
3550 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
3551 const char *maiden, const char *city, const char *state, const char *country, int web) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3552 /* FIXME : some of these things are wrong, but i'm lazy */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3553 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3554 aim_setdirectoryinfo(odata->sess, odata->conn, first, middle, last,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3555 maiden, NULL, NULL, city, state, NULL, 0, web);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3556 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3557
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3558
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3559 static void oscar_set_idle(struct gaim_connection *g, int time) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3560 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3561 aim_bos_setidle(odata->sess, odata->conn, time);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3562 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3563
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3564 static void oscar_set_info(struct gaim_connection *g, char *info) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3565 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3566 gchar *inforeal;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3567
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3568 if (odata->rights.maxsiglen == 0)
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3569 do_error_dialog(_("Unable to set AIM profile."),
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3570 _("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
3571 "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
3572
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3573 if (strlen(info) > odata->rights.maxsiglen) {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3574 gchar *errstr;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3575
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3576 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
3577 "Gaim has truncated and set it."), odata->rights.maxsiglen);
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3578 do_error_dialog("Profile too long.", errstr, GAIM_WARNING);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3579
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3580 g_free(errstr);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3581 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3582
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3583 inforeal = g_strndup(info, odata->rights.maxsiglen);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3584
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
3585 if (odata->icq)
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
3586 aim_bos_setprofile(odata->sess, odata->conn, NULL, NULL, caps_icq);
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
3587 else
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
3588 aim_bos_setprofile(odata->sess, odata->conn, inforeal, NULL, caps_aim);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3589
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3590 g_free(inforeal);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3591
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3592 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3593 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3594
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3595 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
3596 {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3597
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3598 if (od->rights.maxawaymsglen == 0)
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3599 do_error_dialog(_("Unable to set AIM away message."),
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3600 _("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
3601 "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
3602
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3603 if (gc->away)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3604 g_free(gc->away);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3605 gc->away = NULL;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3606
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3607 if (!message) {
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
3608 aim_bos_setprofile(od->sess, od->conn, NULL, "", caps_aim);
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3609 return;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3610 }
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3611
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3612 if (strlen(message) > od->rights.maxawaymsglen) {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3613 gchar *errstr;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3614
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3615 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
3616 "Gaim has truncated it and set you away."), od->rights.maxawaymsglen);
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3617 do_error_dialog("Away message too long.", errstr, GAIM_WARNING);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3618 g_free(errstr);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3619 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3620
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3621 gc->away = g_strndup(message, od->rights.maxawaymsglen);
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
3622 aim_bos_setprofile(od->sess, od->conn, NULL, gc->away, caps_aim);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3623
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3624 return;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3625 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3626
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3627 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
3628 {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3629
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3630 if (gc->away)
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3631 gc->away = NULL;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3632
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3633 if (!strcmp(state, "Online"))
2866
159551b6db88 [gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2865
diff changeset
3634 aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_NORMAL);
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3635 else if (!strcmp(state, "Away")) {
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3636 aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_AWAY);
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3637 gc->away = "";
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3638 } else if (!strcmp(state, "Do Not Disturb")) {
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3639 aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_DND | AIM_ICQ_STATE_BUSY);
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3640 gc->away = "";
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3641 } else if (!strcmp(state, "Not Available")) {
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
3642 aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY);
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3643 gc->away = "";
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3644 } else if (!strcmp(state, "Occupied")) {
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
3645 aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_BUSY);
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3646 gc->away = "";
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3647 } else if (!strcmp(state, "Free For Chat")) {
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3648 aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_CHAT);
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3649 gc->away = "";
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3650 } else if (!strcmp(state, "Invisible")) {
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
3651 aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_INVISIBLE);
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3652 gc->away = "";
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3653 } else if (!strcmp(state, GAIM_AWAY_CUSTOM)) {
2998
358f3655b070 [gaim-migrate @ 3011]
Sean Egan <seanegan@pidgin.im>
parents: 2995
diff changeset
3654 if (message) {
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
3655 aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY);
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3656 gc->away = "";
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3657 } else {
2866
159551b6db88 [gaim-migrate @ 2879]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2865
diff changeset
3658 aim_setextstatus(od->sess, od->conn, AIM_ICQ_STATE_NORMAL);
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
3659 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3660 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3661
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3662 return;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3663 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3664
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3665 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
3666 {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3667 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3668
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3669 if (od->icq)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3670 oscar_set_away_icq(gc, od, state, message);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3671 else
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3672 oscar_set_away_aim(gc, od, message);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3673
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
3674 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3675 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3676
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3677 static void oscar_warn(struct gaim_connection *g, char *name, int anon) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3678 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
2113
206f0011c41e [gaim-migrate @ 2123]
Adam Fritzler <mid@auk.cx>
parents: 2092
diff changeset
3679 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
3680 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3681
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
3682 static void oscar_dir_search(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
3683 const char *maiden, const char *city, const char *state, const char *country, const char *email) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3684 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3685 if (strlen(email))
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3686 aim_usersearch_address(odata->sess, odata->conn, email);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3687 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3688
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
3689 static void oscar_add_buddy(struct gaim_connection *g, const char *name) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3690 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3691 if (odata->icq) {
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3692 aim_add_buddy(odata->sess, odata->conn, name);
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3693 } else {
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3694 if ((odata->sess->ssi.received_data) && !(aim_ssi_itemlist_finditem(odata->sess->ssi.items, NULL, name, 0x0000))) {
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3695 debug_printf("ssi: adding buddy %s to group %s\n", name, find_group_by_buddy(g, name)->name);
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3696 aim_ssi_addbuddies(odata->sess, odata->conn, find_group_by_buddy(g, name)->name, &name, 1);
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3697 }
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3698 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3699 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3700
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3701 static void oscar_add_buddies(struct gaim_connection *g, GList *buddies) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3702 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3703 if (odata->icq) {
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3704 char buf[MSG_LEN];
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3705 int n=0;
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3706 while (buddies) {
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3707 if (n > MSG_LEN - 18) {
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3708 aim_bos_setbuddylist(odata->sess, odata->conn, buf);
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3709 n = 0;
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3710 }
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3711 n += g_snprintf(buf + n, sizeof(buf) - n, "%s&", (char *)buddies->data);
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3712 buddies = buddies->next;
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3713 }
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3714 aim_bos_setbuddylist(odata->sess, odata->conn, buf);
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3715 } else {
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3716 if (odata->sess->ssi.received_data) {
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3717 int tmp;
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3718 GSList *curgrp, *curbud;
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3719 for (curgrp=g->groups; curgrp; curgrp=g_slist_next(curgrp)) {
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3720 tmp = 0;
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3721 for (curbud=((struct group*)curgrp->data)->members; curbud; curbud=curbud->next)
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3722 if (!aim_ssi_itemlist_finditem(odata->sess->ssi.items, NULL, ((struct buddy*)curbud->data)->name, 0x0000))
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3723 tmp++;
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3724 if (tmp) {
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3725 char **sns = (char **)malloc(tmp*sizeof(char*));
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3726 tmp = 0;
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3727 for (curbud=((struct group*)curgrp->data)->members; curbud; curbud=curbud->next)
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3728 if (!aim_ssi_itemlist_finditem(odata->sess->ssi.items, NULL, ((struct buddy*)curbud->data)->name, 0x0000)) {
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3729 debug_printf("ssi: adding buddy %s to group %s\n", ((struct buddy*)curbud->data)->name, ((struct group*)curgrp->data)->name);
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3730 sns[tmp] = (char *)((struct buddy*)curbud->data)->name;
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3731 tmp++;
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3732 }
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
3733 aim_ssi_addbuddies(odata->sess, odata->conn, ((struct group*)curgrp->data)->name, (const char**)sns, tmp);
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3734 free(sns);
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3735 }
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3736 }
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3737 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3738 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3739 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3740
3867
0e747b4295cb [gaim-migrate @ 4019]
Rob Flynn <gaim@robflynn.com>
parents: 3858
diff changeset
3741 static void oscar_move_buddy(struct gaim_connection *g, const char *name, const char *old_group, const char *new_group) {
3140
168c622ed90d [gaim-migrate @ 3155]
Rob Flynn <gaim@robflynn.com>
parents: 3139
diff changeset
3742 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
168c622ed90d [gaim-migrate @ 3155]
Rob Flynn <gaim@robflynn.com>
parents: 3139
diff changeset
3743 if (!odata->icq)
168c622ed90d [gaim-migrate @ 3155]
Rob Flynn <gaim@robflynn.com>
parents: 3139
diff changeset
3744 if (odata->sess->ssi.received_data) {
168c622ed90d [gaim-migrate @ 3155]
Rob Flynn <gaim@robflynn.com>
parents: 3139
diff changeset
3745 aim_ssi_movebuddy(odata->sess, odata->conn, old_group, new_group, name);
168c622ed90d [gaim-migrate @ 3155]
Rob Flynn <gaim@robflynn.com>
parents: 3139
diff changeset
3746 debug_printf("ssi: moved buddy %s from group %s to group %s\n", name, old_group, new_group);
168c622ed90d [gaim-migrate @ 3155]
Rob Flynn <gaim@robflynn.com>
parents: 3139
diff changeset
3747 }
168c622ed90d [gaim-migrate @ 3155]
Rob Flynn <gaim@robflynn.com>
parents: 3139
diff changeset
3748 }
168c622ed90d [gaim-migrate @ 3155]
Rob Flynn <gaim@robflynn.com>
parents: 3139
diff changeset
3749
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3750 static void oscar_remove_buddy(struct gaim_connection *g, char *name, char *group) {
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3751 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3752 if (odata->icq) {
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3753 aim_remove_buddy(odata->sess, odata->conn, name);
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3754 } else {
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3755 if (odata->sess->ssi.received_data) {
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3756 struct aim_ssi_item *ssigroup;
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3757 while (aim_ssi_itemlist_finditem(odata->sess->ssi.items, NULL, name, 0x0000) && (ssigroup = aim_ssi_itemlist_findparent(odata->sess->ssi.items, name)) && !aim_ssi_delbuddies(odata->sess, odata->conn, ssigroup->name, &name, 1))
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3758 debug_printf("ssi: deleted buddy %s from group %s\n", name, group);
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3759 }
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3760 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3761 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3762
3867
0e747b4295cb [gaim-migrate @ 4019]
Rob Flynn <gaim@robflynn.com>
parents: 3858
diff changeset
3763 static void oscar_remove_buddies(struct gaim_connection *g, GList *buddies, const char *group) {
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3764 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3765 if (odata->icq) {
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3766 GList *cur;
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3767 for (cur=buddies; cur; cur=cur->next)
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3768 aim_remove_buddy(odata->sess, odata->conn, cur->data);
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3769 } else {
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3770 if (odata->sess->ssi.received_data) {
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3771 GList *cur;
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3772 int tmp = 0;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3773 for (cur=buddies; cur; cur=cur->next)
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3774 if (aim_ssi_itemlist_finditem(odata->sess->ssi.items, NULL, cur->data, 0x0000))
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3775 tmp++;
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3776 if (tmp) {
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3777 char **sns;
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3778 sns = (char **)malloc(tmp*sizeof(char*));
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3779 tmp = 0;
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3780 for (cur=buddies; cur; cur=cur->next)
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3781 if (aim_ssi_itemlist_finditem(odata->sess->ssi.items, NULL, cur->data, 0x0000)) {
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3782 debug_printf("ssi: deleting buddy %s from group %s\n", cur->data, group);
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3783 sns[tmp] = cur->data;
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3784 tmp++;
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3785 }
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3786 aim_ssi_delbuddies(odata->sess, odata->conn, group, sns, tmp);
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3787 free(sns);
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3788 }
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3789 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3790 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3791 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3792
3867
0e747b4295cb [gaim-migrate @ 4019]
Rob Flynn <gaim@robflynn.com>
parents: 3858
diff changeset
3793 static void oscar_rename_group(struct gaim_connection *g, const char *old_group, const char *new_group, GList *members) {
3348
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3316
diff changeset
3794 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3316
diff changeset
3795 if (!odata->icq)
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3316
diff changeset
3796 if (odata->sess->ssi.received_data) {
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3316
diff changeset
3797 if (aim_ssi_itemlist_finditem(odata->sess->ssi.items, NULL, new_group, 0x0001)) {
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3316
diff changeset
3798 oscar_remove_buddies(g, members, old_group);
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3316
diff changeset
3799 oscar_add_buddies(g, members);
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3316
diff changeset
3800 debug_printf("ssi: moved all buddies from group %s to %s\n", old_group, new_group);
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3316
diff changeset
3801 } else {
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3316
diff changeset
3802 aim_ssi_rename_group(odata->sess, odata->conn, old_group, new_group);
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3316
diff changeset
3803 debug_printf("ssi: renamed group %s to %s\n", old_group, new_group);
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3316
diff changeset
3804 }
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3316
diff changeset
3805 }
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3316
diff changeset
3806 }
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3316
diff changeset
3807
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3808 static int gaim_ssi_parserights(aim_session_t *sess, aim_frame_t *fr, ...) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3809 /* XXX - Fix parsing of the ssi rights packet and pass us the data
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3810 fu16_t maxbuddies, maxgroups, maxpermits, maxdenies;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3811 va_list ap;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3812
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3813 va_start(ap, fr);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3814 maxbuddies = (fu16_t)va_arg(ap, unsigned int);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3815 maxgroupss = (fu16_t)va_arg(ap, unsigned int);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3816 maxpermits = (fu16_t)va_arg(ap, unsigned int);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3817 maxdenies = (fu16_t)va_arg(ap, unsigned int);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3818 va_end(ap);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3819
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3820 debug_printf("ssi rights: Max buddies = %d / Max groups = %d / Max permits = %d / Max denies = %d\n", maxbuddies, maxgroups, maxpermits, maxdenies);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3821 */
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3822
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3823 return 1;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3824 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3825
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3826 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
3827 struct gaim_connection *gc = sess->aux_data;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3828 struct oscar_data *odata = (struct oscar_data *)gc->proto_data;
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3829 struct aim_ssi_item *curitem;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3830 int tmp;
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
3831 const char **sns;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3832
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3833 debug_printf("ssi: syncing local list and server list\n");
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3834
3109
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
3835 if (odata->icq)
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3836 return 1;
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3837
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3838 /* Activate SSI */
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3839 debug_printf("ssi: activating server-stored buddy list\n");
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3840 aim_ssi_enable(sess, fr->conn);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3841
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3842 /* Clean the buddy list */
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3843 aim_ssi_cleanlist(sess, fr->conn);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3844
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3845 /* Add from server list to local list */
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3846 tmp = 0;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3847 for (curitem=sess->ssi.items; curitem; curitem=curitem->next) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3848 switch (curitem->type) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3849 case 0x0000: /* Buddy */
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3850 if ((curitem->name) && (!find_buddy(gc, curitem->name))) {
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3851 struct aim_ssi_item *curgroup = sess->ssi.items;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3852 while (curgroup) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3853 if ((curgroup->type == 0x0001) && (curgroup->gid == curitem->gid) && (curgroup->name)) {
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3854 debug_printf("ssi: adding buddy %s to group %s to local list\n", curitem->name, curgroup->name);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3855 add_buddy(gc, curgroup->name, curitem->name, 0);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3856 tmp++;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3857 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3858 curgroup = curgroup->next;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3859 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3860 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3861 break;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3862
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3863 case 0x0002: /* Permit buddy */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3864 if (curitem->name) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3865 GSList *list;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3866 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
3867 if (!list) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3868 char *name;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3869 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
3870 name = g_strdup(normalize(curitem->name));
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3871 gc->permit = g_slist_append(gc->permit, name);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3872 build_allow_list();
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3873 tmp++;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3874 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3875 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3876 break;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3877
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3878 case 0x0003: /* Deny buddy */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3879 if (curitem->name) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3880 GSList *list;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3881 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
3882 if (!list) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3883 char *name;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3884 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
3885 name = g_strdup(normalize(curitem->name));
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3886 gc->deny = g_slist_append(gc->deny, name);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3887 build_block_list();
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3888 tmp++;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3889 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3890 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3891 break;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3892
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3893 case 0x0004: /* Permit/deny setting */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3894 if (curitem->data) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3895 fu8_t permdeny;
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3896 if ((permdeny = aim_ssi_getpermdeny(sess->ssi.items)) && (permdeny != gc->permdeny)) {
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3897 debug_printf("ssi: changing permdeny from %d to %d\n", gc->permdeny, permdeny);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3898 gc->permdeny = permdeny;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
3899 tmp++;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3900 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3901 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3902 break;
3109
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
3903
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
3904 case 0x0005: /* Presence setting */
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
3905 /* We don't want to change Gaim's setting because it applies to all accounts */
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
3906 break;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3907 } /* End of switch on curitem->type */
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3908 } /* End of for loop */
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3909 if (tmp)
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3910 do_export(gc);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3911
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3912 /* Add from local list to server list */
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3913 if (gc) {
3017
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3914 GSList *cur;
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3915
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3916 /* Buddies */
3017
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3917 cur = gc->groups;
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3918 while (cur) {
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3919 GSList *curbud;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3920 tmp = 0;
3017
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3921 for (curbud=((struct group*)cur->data)->members; curbud; curbud=curbud->next)
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3922 if (!aim_ssi_itemlist_finditem(sess->ssi.items, NULL, ((struct buddy*)curbud->data)->name, 0x0000))
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3923 tmp++;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3924 if (tmp) {
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
3925 sns = malloc(tmp*sizeof(char*));
3017
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3926 tmp = 0;
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3927 for (curbud=((struct group*)cur->data)->members; curbud; curbud=curbud->next)
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3928 if (!aim_ssi_itemlist_finditem(sess->ssi.items, NULL, ((struct buddy*)curbud->data)->name, 0x0000)) {
3017
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3929 debug_printf("ssi: adding buddy %s from local list to server list\n", ((struct buddy*)curbud->data)->name);
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3930 sns[tmp] = ((char *)((struct buddy*)curbud->data)->name);
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3931 tmp++;
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3932 }
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3933 aim_ssi_addbuddies(sess, fr->conn, ((struct group*)cur->data)->name, sns, tmp);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3934 free(sns);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3935 }
3017
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3936 cur = g_slist_next(cur);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3937 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3938
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3939 /* Permit list */
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3940 if (gc->permit) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3941 tmp = 0;
3017
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3942 for (cur=gc->permit; cur; cur=cur->next)
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3943 if (!aim_ssi_itemlist_finditem(sess->ssi.items, NULL, cur->data, 0x0002))
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3944 tmp++;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3945 if (tmp) {
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
3946 sns = malloc(tmp*sizeof(char*));
3017
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3947 tmp = 0;
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3948 for (cur=gc->permit; cur; cur=cur->next)
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3949 if (!aim_ssi_itemlist_finditem(sess->ssi.items, NULL, cur->data, 0x0002)) {
3017
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3950 debug_printf("ssi: adding permit %s from local list to server list\n", cur->data);
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3951 sns[tmp] = cur->data;
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3952 tmp++;
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3953 }
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3954 aim_ssi_addpord(sess, fr->conn, sns, tmp, AIM_SSI_TYPE_PERMIT);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3955 free(sns);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3956 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3957 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3958
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3959 /* Deny list */
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3960 if (gc->deny) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3961 tmp = 0;
3017
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3962 for (cur=gc->deny; cur; cur=cur->next)
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3963 if (!aim_ssi_itemlist_finditem(sess->ssi.items, NULL, cur->data, 0x0003))
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3964 tmp++;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3965 if (tmp) {
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
3966 sns = malloc(tmp*sizeof(char*));
3017
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3967 tmp = 0;
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3968 for (cur=gc->deny; cur; cur=cur->next)
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3969 if (!aim_ssi_itemlist_finditem(sess->ssi.items, NULL, cur->data, 0x0003)) {
3017
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3970 debug_printf("ssi: adding deny %s from local list to server list\n", cur->data);
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3971 sns[tmp] = cur->data;
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3972 tmp++;
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3973 }
e01d7ec2b5db [gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents: 3016
diff changeset
3974 aim_ssi_addpord(sess, fr->conn, sns, tmp, AIM_SSI_TYPE_DENY);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3975 free(sns);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3976 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3977 }
3109
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
3978
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
3979 /* Presence settings (idle time visibility) */
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3980 if ((tmp = aim_ssi_getpresence(sess->ssi.items)) != 0xFFFFFFFF)
3109
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
3981 if (report_idle && !(tmp & 0x400))
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
3982 aim_ssi_setpresence(sess, fr->conn, tmp | 0x400);
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3983
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3984 /* Check for maximum number of buddies */
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3985 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
3986 struct group* gr = (struct group*)cur->data;
4a122e5439da [gaim-migrate @ 3231]
Sean Egan <seanegan@pidgin.im>
parents: 3212
diff changeset
3987 tmp = tmp + g_slist_length(gr->members);
4a122e5439da [gaim-migrate @ 3231]
Sean Egan <seanegan@pidgin.im>
parents: 3212
diff changeset
3988 }
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3989 if (tmp > odata->rights.maxbuddies) {
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3990 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
3991 " Until you are below the limit, some buddies will not show up as online."),
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3992 odata->rights.maxbuddies, tmp);
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
3993 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
3994 g_free(dialog_msg);
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3995 }
3214
4a122e5439da [gaim-migrate @ 3231]
Sean Egan <seanegan@pidgin.im>
parents: 3212
diff changeset
3996
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
3997 } /* end if (gc) */
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
3998
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
3999 return 1;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4000 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4001
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4002 static GList *oscar_chat_info(struct gaim_connection *gc) {
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4003 GList *m = NULL;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4004 struct proto_chat_entry *pce;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4005
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4006 pce = g_new0(struct proto_chat_entry, 1);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4007 pce->label = _("Join what group:");
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4008 m = g_list_append(m, pce);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4009
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4010 pce = g_new0(struct proto_chat_entry, 1);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4011 pce->label = _("Exchange:");
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4012 pce->is_int = TRUE;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4013 pce->min = 4;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4014 pce->max = 20;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4015 m = g_list_append(m, pce);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4016
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4017 return m;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4018 }
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4019
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4020 static void oscar_join_chat(struct gaim_connection *g, GList *data) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4021 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4022 aim_conn_t *cur;
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4023 char *name;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4024 int *exchange;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4025
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4026 if (!data || !data->next)
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4027 return;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4028
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4029 name = data->data;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4030 exchange = data->next->data;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4031
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4032 debug_printf("Attempting to join chat room %s.\n", name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4033 if ((cur = aim_getconn_type(odata->sess, AIM_CONN_TYPE_CHATNAV))) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4034 debug_printf("chatnav exists, creating room\n");
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4035 aim_chatnav_createroom(odata->sess, cur, name, *exchange);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4036 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4037 /* this gets tricky */
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
4038 struct create_room *cr = g_new0(struct create_room, 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4039 debug_printf("chatnav does not exist, opening chatnav\n");
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
4040 cr->exchange = *exchange;
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
4041 cr->name = g_strdup(name);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
4042 odata->create_rooms = g_slist_append(odata->create_rooms, cr);
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
4043 aim_reqservice(odata->sess, odata->conn, AIM_CONN_TYPE_CHATNAV);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4044 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4045 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4046
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
4047 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
4048 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4049 struct chat_connection *ccon = find_oscar_chat(g, id);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4050
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4051 if (!ccon)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4052 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4053
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4054 aim_chat_invite(odata->sess, odata->conn, name, message ? message : "",
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4055 ccon->exchange, ccon->name, 0x0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4056 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4057
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4058 static void oscar_chat_leave(struct gaim_connection *g, int id) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4059 struct oscar_data *odata = g ? (struct oscar_data *)g->proto_data : NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4060 GSList *bcs = g->buddy_chats;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4061 struct conversation *b = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4062 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4063 int count = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4064
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4065 while (bcs) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4066 count++;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4067 b = (struct conversation *)bcs->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4068 if (id == b->id)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4069 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4070 bcs = bcs->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4071 b = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4072 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4073
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4074 if (!b)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4075 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4076
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4077 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
4078
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4079 c = find_oscar_chat(g, b->id);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4080 if (c != NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4081 if (odata)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4082 odata->oscar_chats = g_slist_remove(odata->oscar_chats, c);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4083 if (c->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
4084 gaim_input_remove(c->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4085 if (g && odata->sess)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4086 aim_conn_kill(odata->sess, &c->conn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4087 g_free(c->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4088 g_free(c->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4089 g_free(c);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4090 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4091 /* 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
4092 serv_got_chat_left(g, b->id);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4093 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4094
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4095 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
4096 struct oscar_data *odata = (struct oscar_data *)g->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4097 GSList *bcs = g->buddy_chats;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4098 struct conversation *b = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4099 struct chat_connection *c = NULL;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4100 char *buf, *buf2;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4101 int i, j;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4102
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4103 while (bcs) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4104 b = (struct conversation *)bcs->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4105 if (id == b->id)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4106 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4107 bcs = bcs->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4108 b = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4109 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4110 if (!b)
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4111 return -EINVAL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4112
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4113 bcs = odata->oscar_chats;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4114 while (bcs) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4115 c = (struct chat_connection *)bcs->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4116 if (b == c->cnv)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4117 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4118 bcs = bcs->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4119 c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4120 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4121 if (!c)
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4122 return -EINVAL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4123
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4124 buf = g_malloc(strlen(message) * 4 + 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4125 for (i = 0, j = 0; i < strlen(message); i++) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4126 if (message[i] == '\n') {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4127 buf[j++] = '<';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4128 buf[j++] = 'B';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4129 buf[j++] = 'R';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4130 buf[j++] = '>';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4131 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4132 buf[j++] = message[i];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4133 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4134 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4135 buf[j] = '\0';
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4136
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4137 if (strlen(buf) > c->maxlen)
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4138 return -E2BIG;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4139
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4140 buf2 = strip_html(buf);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4141 if (strlen(buf2) > c->maxvis) {
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4142 g_free(buf2);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4143 return -E2BIG;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4144 }
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4145 g_free(buf2);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4146
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4147 aim_chat_send_im(odata->sess, c->conn, 0, buf, strlen(buf));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4148 g_free(buf);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4149 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4150 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4151
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4152 static char **oscar_list_icon(int uc) {
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4153 if (uc == 0)
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4154 return (char **)icon_online_xpm;
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4155 if (uc & 0xffff0000) {
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4156 uc >>= 16;
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
4157 if (uc & AIM_ICQ_STATE_INVISIBLE)
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
4158 return icon_offline_xpm;
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
4159 if (uc & AIM_ICQ_STATE_CHAT)
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
4160 return icon_ffc_xpm;
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4161 if (uc & AIM_ICQ_STATE_DND)
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4162 return icon_dnd_xpm;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4163 if (uc & AIM_ICQ_STATE_OUT)
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4164 return icon_na_xpm;
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
4165 if (uc & AIM_ICQ_STATE_BUSY)
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
4166 return icon_occ_xpm;
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
4167 if (uc & AIM_ICQ_STATE_AWAY)
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
4168 return icon_away_xpm;
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4169 return icon_online_xpm;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4170 }
3101
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
4171 if (uc & UC_UNAVAILABLE)
77ed45aa5ae2 [gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents: 3092
diff changeset
4172 return (char **)away_icon_xpm;
3079
e55c9a9cc4fc [gaim-migrate @ 3093]
Mark Doliner <markdoliner@pidgin.im>
parents: 3074
diff changeset
4173 if (uc & UC_WIRELESS)
e55c9a9cc4fc [gaim-migrate @ 3093]
Mark Doliner <markdoliner@pidgin.im>
parents: 3074
diff changeset
4174 return (char **)wireless_icon_xpm;
2689
bd713491a0d7 [gaim-migrate @ 2702]
Adam Fritzler <mid@auk.cx>
parents: 2681
diff changeset
4175 if (uc & UC_AB)
2679
209a5948cb6e [gaim-migrate @ 2692]
Adam Fritzler <mid@auk.cx>
parents: 2675
diff changeset
4176 return (char **)ab_xpm;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4177 if (uc & UC_AOL)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4178 return (char **)aol_icon_xpm;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4179 if (uc & UC_ADMIN)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4180 return (char **)admin_icon_xpm;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4181 if (uc & UC_UNCONFIRMED)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4182 return (char **)dt_icon_xpm;
2297
d957c91e8562 [gaim-migrate @ 2307]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2288
diff changeset
4183 if (uc & UC_NORMAL)
d957c91e8562 [gaim-migrate @ 2307]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2288
diff changeset
4184 return (char **)free_icon_xpm;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4185 return NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4186 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4187
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
4188 void oscar_file_transfer_nextfile(struct gaim_connection *gc,
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4189 struct file_transfer *xfer) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4190 struct oscar_file_transfer *oft = find_oft_by_xfer(gc, xfer);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4191 aim_conn_t *conn = oft->conn;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4192 aim_session_t *sess = aim_conn_getsess(conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4193
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4194 oft->filesdone++;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4195 oft->watcher = gaim_input_add(conn->fd, GAIM_INPUT_READ,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4196 oscar_callback, conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4197
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4198 /* If this is an incoming sendfile transfer, we send an OK
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4199 * message to the sender; if this is an outgoing sendfile, we
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4200 * 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
4201 * 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
4202 * yet.
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4203 */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4204
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4205 if (oft->type == OFT_SENDFILE_IN)
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4206 aim_oft_end(sess, conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4207 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4208
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
4209 void oscar_file_transfer_done(struct gaim_connection *gc,
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4210 struct file_transfer *xfer) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4211 struct oscar_file_transfer *oft = find_oft_by_xfer(gc, xfer);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4212 aim_conn_t *conn = oft->conn;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4213 aim_session_t *sess = aim_conn_getsess(conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4214
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4215 oft->filesdone++;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4216 if (oft->type == OFT_SENDFILE_IN) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4217 aim_oft_end(sess, conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4218 oscar_file_transfer_disconnect(sess, conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4219 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4220 else if (oft->type == OFT_SENDFILE_OUT) {
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4221 /* Wait for response before closing connection. */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4222 oft->watcher = gaim_input_add(conn->fd, GAIM_INPUT_READ,
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4223 oscar_callback, conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4224 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4225 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4226
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4227 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
4228 struct gaim_connection *gc = sess->aux_data;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4229 va_list ap;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4230 aim_conn_t *conn;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4231 struct oscar_file_transfer *oft;
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
4232 struct aim_fileheader_t *fh;
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4233 int err;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4234
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4235 va_start(ap, fr);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4236 conn = va_arg(ap, aim_conn_t *);
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
4237 fh = va_arg(ap, struct aim_fileheader_t *);
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
4238 va_end(ap);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4239
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4240 oft = find_oft_by_conn(gc, conn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4241
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4242 /* Don't use the regular input handler for the raw data. */
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4243 gaim_input_remove(oft->watcher);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4244 oft->watcher = 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4245
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4246 if (oft->type == OFT_SENDFILE_IN) {
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
4247 err = transfer_in_do(oft->xfer, conn->fd,
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
4248 fh->name, fh->size);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4249 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4250 else {
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
4251 err = transfer_out_do(oft->xfer, conn->fd, fh->nrecvd);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4252 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4253
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4254 if (err) {
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4255 /* There was an error; cancel the transfer. */
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4256 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4257 aim_conn_t *bosconn = od->conn;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4258 aim_canceltransfer(sess, bosconn, oft->cookie,
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4259 oft->sn, AIM_CAPS_SENDFILE);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4260 oscar_file_transfer_disconnect(sess, oft->conn);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4261 }
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4262
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4263 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4264 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4265
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4266 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
4267 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4268 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4269 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4270 aim_conn_t *newconn, *listenerconn;
2235
8828cb249372 [gaim-migrate @ 2245]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2232
diff changeset
4271 struct conversation *cnv;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4272 struct direct_im *dim;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4273 char buf[256];
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4274 char *sn;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4275
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4276 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4277 newconn = va_arg(ap, aim_conn_t *);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4278 listenerconn = va_arg(ap, aim_conn_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4279 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4280
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4281 aim_conn_close(listenerconn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4282 aim_conn_kill(sess, &listenerconn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4283
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4284 sn = g_strdup(aim_directim_getsn(newconn));
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4285
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4286 debug_printf("DirectIM: initiate success to %s\n", sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4287 dim = find_direct_im(od, sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4288
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4289 if (!(cnv = find_conversation(sn)))
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4290 cnv = new_conversation(sn);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
4291 gaim_input_remove(dim->watcher);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4292 dim->conn = newconn;
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
4293 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4294 oscar_callback, dim->conn);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4295 dim->connected = TRUE;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4296 g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4297 g_free(sn);
2856
046ed5e89321 [gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2833
diff changeset
4298 write_to_conv(cnv, buf, WFLAG_SYSTEM, NULL, time(NULL), -1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4299
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4300 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
4301 gaim_directim_incoming, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4302 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
4303 gaim_directim_typing, 0);
3033
1f078ab46e76 [gaim-migrate @ 3046]
Sean Egan <seanegan@pidgin.im>
parents: 3031
diff changeset
4304 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
4305 gaim_update_ui, 0);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4306 return 1;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4307 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4308
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4309 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
4310 va_list ap;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4311 char *sn;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4312 double percent;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4313 struct gaim_connection *gc = sess->aux_data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4314 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4315 struct conversation *c;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4316 struct direct_im *dim;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4317
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4318 va_start(ap, fr);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4319 sn = va_arg(ap, char *);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4320 percent = va_arg(ap, double);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4321 va_end(ap);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4322
2994
72d79fc3eeaa [gaim-migrate @ 3007]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
4323 if (!(dim = find_direct_im(od, sn)))
72d79fc3eeaa [gaim-migrate @ 3007]
Sean Egan <seanegan@pidgin.im>
parents: 2993
diff changeset
4324 return 1;
3059
bd4d661482f5 [gaim-migrate @ 3073]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3048
diff changeset
4325 if (dim->watcher) {
bd4d661482f5 [gaim-migrate @ 3073]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3048
diff changeset
4326 gaim_input_remove(dim->watcher); /* Otherwise, the callback will callback */
bd4d661482f5 [gaim-migrate @ 3073]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3048
diff changeset
4327 dim->watcher = 0;
bd4d661482f5 [gaim-migrate @ 3073]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3048
diff changeset
4328 }
3044
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
4329 while (gtk_events_pending())
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
4330 gtk_main_iteration();
4afb69af09c8 [gaim-migrate @ 3057]
Sean Egan <seanegan@pidgin.im>
parents: 3035
diff changeset
4331
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4332 if ((c = find_conversation(sn)))
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4333 update_progress(c, percent);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4334 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4335 oscar_callback, dim->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4336
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4337 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4338 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4339
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4340 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
4341 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4342 char *msg, *sn;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4343 int len;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4344 struct gaim_connection *gc = sess->aux_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4345
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4346 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4347 sn = va_arg(ap, char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4348 msg = va_arg(ap, char *);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4349 len = va_arg(ap, int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4350 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4351
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4352 debug_printf("Got DirectIM message from %s\n", sn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4353
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4354 serv_got_im(gc, sn, msg, 0, time(NULL), len);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4355
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4356 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4357 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4358
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4359 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
4360 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4361 char *sn;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4362 int typing;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4363 struct gaim_connection *gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4364
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4365 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4366 sn = va_arg(ap, char *);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4367 typing = va_arg(ap, int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4368 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4369
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4370 if (typing) {
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4371 /* 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
4372 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
4373 serv_got_typing(gc,sn,0, TYPING);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4374 } else
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4375 serv_got_typing_stopped(gc,sn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4376 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4377 }
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 struct ask_do_dir_im {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4380 char *who;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4381 struct gaim_connection *gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4382 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4383
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
4384 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
4385 g_free(data);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4386 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4387
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
4388 static void oscar_direct_im(struct ask_do_dir_im *data) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4389 struct gaim_connection *gc = data->gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4390 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4391 struct direct_im *dim;
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 dim = find_direct_im(od, data->who);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4394 if (dim) {
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4395 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
4396 od->direct_ims = g_slist_remove(od->direct_ims, dim);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4397 gaim_input_remove(dim->watcher);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4398 g_free(dim);
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4399 debug_printf("Gave up on old direct IM, trying again\n");
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4400 } else {
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
4401 do_error_dialog("DirectIM already open.", NULL, GAIM_ERROR);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4402 return;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
4403 }
2086
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 dim = g_new0(struct direct_im, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4406 dim->gc = gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4407 g_snprintf(dim->name, sizeof dim->name, "%s", data->who);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4408
2717
b97d1ea4e28c [gaim-migrate @ 2730]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2713
diff changeset
4409 dim->conn = aim_directim_initiate(od->sess, data->who);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4410 if (dim->conn != NULL) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4411 od->direct_ims = g_slist_append(od->direct_ims, dim);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
4412 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4413 oscar_callback, dim->conn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4414 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
4415 gaim_directim_initiate, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4416 } else {
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
4417 do_error_dialog(_("Unable to open Direct IM"), NULL, GAIM_ERROR);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4418 g_free(dim);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4419 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4420 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4421
2170
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4422 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
4423 char buf[BUF_LONG];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4424 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
4425 data->who = who;
2170
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4426 data->gc = gc;
3730
55e36c4e42f9 [gaim-migrate @ 3868]
Sean Egan <seanegan@pidgin.im>
parents: 3725
diff changeset
4427 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
4428 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
4429 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4430
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4431 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
4432 struct oscar_data *od = gc->proto_data;
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4433 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
4434 if (od->icq) {
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4435 struct buddy *budlight = find_buddy(gc, who);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4436 if (budlight)
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4437 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
4438 if (budlight->caps & AIM_CAPS_ICQSERVERRELAY)
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4439 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
4440 else {
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4441 char *state_msg = gaim_icq_status((budlight->uc & 0xffff0000) >> 16);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4442 char *dialog_msg = g_strdup_printf(_("<B>UIN:</B> %s<BR><B>Status:</B> %s<BR><HR><BR><I>Remote client does not support sending status messages.</I><BR>"), who, state_msg);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4443 g_show_info_text(gc, who, 2, dialog_msg, NULL);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4444 free(state_msg);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4445 free(dialog_msg);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4446 }
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4447 else {
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4448 char *state_msg = gaim_icq_status((budlight->uc & 0xffff0000) >> 16);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4449 char *dialog_msg = g_strdup_printf(_("<B>UIN:</B> %s<BR><B>Status:</B> %s<BR><HR><BR><I>User has no status message.</I><BR>"), who, state_msg);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4450 g_show_info_text(gc, who, 2, dialog_msg, NULL);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4451 free(state_msg);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4452 free(dialog_msg);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4453 }
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4454 else
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
4455 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
4456 } else
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4457 oscar_get_info(gc, who);
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4458 }
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4459
2170
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4460 static GList *oscar_buddy_menu(struct gaim_connection *gc, char *who) {
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4461 GList *m = NULL;
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4462 struct proto_buddy_menu *pbm;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4463 char *n = g_strdup(normalize(gc->username));
2833
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4464 struct oscar_data *odata = gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4465
2170
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4466 pbm = g_new0(struct proto_buddy_menu, 1);
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4467 pbm->label = _("Get Info");
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4468 pbm->callback = oscar_get_info;
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4469 pbm->gc = gc;
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4470 m = g_list_append(m, pbm);
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4471
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4472 if (odata->icq) {
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4473 pbm = g_new0(struct proto_buddy_menu, 1);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4474 pbm->label = _("Get Status Msg");
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4475 pbm->callback = oscar_get_away_msg;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4476 pbm->gc = gc;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4477 m = g_list_append(m, pbm);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4478 } else {
2170
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4479 pbm = g_new0(struct proto_buddy_menu, 1);
2833
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4480 pbm->label = _("Get Away Msg");
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4481 pbm->callback = oscar_get_away_msg;
2170
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4482 pbm->gc = gc;
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4483 m = g_list_append(m, pbm);
2833
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4484
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4485 if (strcmp(n, normalize(who))) {
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4486 pbm = g_new0(struct proto_buddy_menu, 1);
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4487 pbm->label = _("Direct IM");
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4488 pbm->callback = oscar_ask_direct_im;
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4489 pbm->gc = gc;
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4490 m = g_list_append(m, pbm);
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4491
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4492 pbm = g_new0(struct proto_buddy_menu, 1);
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4493 pbm->label = _("Send File");
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4494 pbm->callback = oscar_ask_send_file;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4495 pbm->gc = gc;
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4496 m = g_list_append(m, pbm);
2833
7062e95f00c3 [gaim-migrate @ 2846]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2822
diff changeset
4497 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4498 }
2920
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
4499
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
4500 pbm = g_new0(struct proto_buddy_menu, 1);
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
4501 pbm->label = _("Get Capabilities");
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
4502 pbm->callback = oscar_get_caps;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
4503 pbm->gc = gc;
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
4504 m = g_list_append(m, pbm);
18719b2176c1 [gaim-migrate @ 2933]
Adam Fritzler <mid@auk.cx>
parents: 2918
diff changeset
4505
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4506 g_free(n);
2170
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4507
5c93594ff522 [gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2167
diff changeset
4508 return m;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4509 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4510
3456
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4511 static GList *oscar_edit_buddy_menu(struct gaim_connection *gc, char *who)
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4512 {
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4513 GList *m = NULL;
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4514 struct proto_buddy_menu *pbm;
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4515 struct oscar_data *odata = gc->proto_data;
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4516
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4517 if (odata->icq) {
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4518 pbm = g_new0(struct proto_buddy_menu, 1);
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4519 pbm->label = _("Get Info");
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4520 pbm->callback = oscar_get_info;
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4521 pbm->gc = gc;
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4522 m = g_list_append(m, pbm);
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4523 }
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4524
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4525 return m;
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4526 }
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4527
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4528 static void oscar_set_permit_deny(struct gaim_connection *gc) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4529 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4530 if (od->icq) {
3783
e3e6355bcb6b [gaim-migrate @ 3923]
Sean Egan <seanegan@pidgin.im>
parents: 3782
diff changeset
4531 GSList *list, *g;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4532 char buf[MAXMSGLEN];
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4533 int at;
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4534
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4535 switch(gc->permdeny) {
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4536 case 1:
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4537 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, gc->username);
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4538 break;
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4539 case 2:
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4540 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, gc->username);
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4541 break;
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4542 case 3:
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4543 list = gc->permit;
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4544 at = 0;
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4545 while (list) {
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4546 at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", (char *)list->data);
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4547 list = list->next;
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4548 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4549 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, buf);
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4550 break;
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4551 case 4:
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4552 list = gc->deny;
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4553 at = 0;
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4554 while (list) {
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4555 at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", (char *)list->data);
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4556 list = list->next;
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4557 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4558 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, buf);
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4559 break;
3782
f668781bee1b [gaim-migrate @ 3922]
Sean Egan <seanegan@pidgin.im>
parents: 3771
diff changeset
4560 case 5:
3783
e3e6355bcb6b [gaim-migrate @ 3923]
Sean Egan <seanegan@pidgin.im>
parents: 3782
diff changeset
4561 g = gc->groups;
3782
f668781bee1b [gaim-migrate @ 3922]
Sean Egan <seanegan@pidgin.im>
parents: 3771
diff changeset
4562 at = 0;
f668781bee1b [gaim-migrate @ 3922]
Sean Egan <seanegan@pidgin.im>
parents: 3771
diff changeset
4563 while (g) {
f668781bee1b [gaim-migrate @ 3922]
Sean Egan <seanegan@pidgin.im>
parents: 3771
diff changeset
4564 list = ((struct group *)g->data)->members;
f668781bee1b [gaim-migrate @ 3922]
Sean Egan <seanegan@pidgin.im>
parents: 3771
diff changeset
4565 while (list) {
f668781bee1b [gaim-migrate @ 3922]
Sean Egan <seanegan@pidgin.im>
parents: 3771
diff changeset
4566 at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", (char *)list->data);
f668781bee1b [gaim-migrate @ 3922]
Sean Egan <seanegan@pidgin.im>
parents: 3771
diff changeset
4567 list = list->next;
f668781bee1b [gaim-migrate @ 3922]
Sean Egan <seanegan@pidgin.im>
parents: 3771
diff changeset
4568 }
f668781bee1b [gaim-migrate @ 3922]
Sean Egan <seanegan@pidgin.im>
parents: 3771
diff changeset
4569 g = g->next;
f668781bee1b [gaim-migrate @ 3922]
Sean Egan <seanegan@pidgin.im>
parents: 3771
diff changeset
4570 }
f668781bee1b [gaim-migrate @ 3922]
Sean Egan <seanegan@pidgin.im>
parents: 3771
diff changeset
4571 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, buf);
f668781bee1b [gaim-migrate @ 3922]
Sean Egan <seanegan@pidgin.im>
parents: 3771
diff changeset
4572 break;
f668781bee1b [gaim-migrate @ 3922]
Sean Egan <seanegan@pidgin.im>
parents: 3771
diff changeset
4573 default:
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4574 break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4575 }
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4576 signoff_blocked(gc);
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4577 } else {
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4578 if (od->sess->ssi.received_data)
3210
9f0e2d3d8a02 [gaim-migrate @ 3227]
Mark Doliner <markdoliner@pidgin.im>
parents: 3186
diff changeset
4579 aim_ssi_setpermdeny(od->sess, od->conn, gc->permdeny, 0xffffffff);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4580 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4581 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4582
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4583 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
4584 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4585 if (od->icq) {
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4586 if (gc->permdeny != 3) return;
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4587 oscar_set_permit_deny(gc);
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4588 } else {
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4589 debug_printf("ssi: About to add a permit\n");
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4590 if (od->sess->ssi.received_data)
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
4591 aim_ssi_addpord(od->sess, od->conn, (const char **) &who, 1, AIM_SSI_TYPE_PERMIT);
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4592 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4593 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4594
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4595 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
4596 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4597 if (od->icq) {
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4598 if (gc->permdeny != 4) return;
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4599 oscar_set_permit_deny(gc);
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4600 } else {
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4601 debug_printf("ssi: About to add a deny\n");
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4602 if (od->sess->ssi.received_data)
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
4603 aim_ssi_addpord(od->sess, od->conn, (const char **) &who, 1, AIM_SSI_TYPE_DENY);
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4604 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4605 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4606
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4607 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
4608 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4609 if (od->icq) {
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4610 if (gc->permdeny != 3) return;
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4611 oscar_set_permit_deny(gc);
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4612 } else {
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4613 debug_printf("ssi: About to delete a permit\n");
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4614 if (od->sess->ssi.received_data)
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4615 aim_ssi_delpord(od->sess, od->conn, (const char **) &who, 1, AIM_SSI_TYPE_PERMIT);
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4616 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4617 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4618
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4619 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
4620 struct oscar_data *od = (struct oscar_data *)gc->proto_data;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4621 if (od->icq) {
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4622 if (gc->permdeny != 4) return;
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4623 oscar_set_permit_deny(gc);
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4624 } else {
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4625 debug_printf("ssi: About to delete a deny\n");
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4626 if (od->sess->ssi.received_data)
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4627 aim_ssi_delpord(od->sess, od->conn, (const char **) &who, 1, AIM_SSI_TYPE_DENY);
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
4628 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4629 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4630
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4631 static GList *oscar_away_states(struct gaim_connection *gc)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4632 {
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4633 struct oscar_data *od = gc->proto_data;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4634 GList *m = NULL;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4635
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4636 if (!od->icq)
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4637 return g_list_append(m, GAIM_AWAY_CUSTOM);
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4638
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4639 m = g_list_append(m, "Online");
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4640 m = g_list_append(m, "Away");
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4641 m = g_list_append(m, "Do Not Disturb");
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4642 m = g_list_append(m, "Not Available");
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4643 m = g_list_append(m, "Occupied");
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4644 m = g_list_append(m, "Free For Chat");
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4645 m = g_list_append(m, "Invisible");
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4646
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
4647 return m;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4648 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4649
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4650 static void oscar_change_email(struct gaim_connection *gc, char *email)
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4651 {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4652 struct oscar_data *od = gc->proto_data;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4653 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
4654
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4655 if (conn) {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4656 aim_admin_setemail(od->sess, conn, email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4657 } else {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4658 od->setemail = TRUE;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4659 od->email = g_strdup(email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4660 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4661 }
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4662 }
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4663
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4664 static void oscar_format_screenname(struct gaim_connection *gc, char *nick) {
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4665 struct oscar_data *od = gc->proto_data;
3031
19df9f33607c [gaim-migrate @ 3044]
Sean Egan <seanegan@pidgin.im>
parents: 3017
diff changeset
4666 if (!strcmp(normalize(nick), normalize(gc->username))) {
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4667 if (!aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH)) {
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4668 od->setnick = TRUE;
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4669 od->newsn = g_strdup(nick);
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4670 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4671 } else {
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4672 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
4673 }
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4674 } else {
3427
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
4675 do_error_dialog("The new formatting is invalid.",
75387df65a9b [gaim-migrate @ 3453]
Sean Egan <seanegan@pidgin.im>
parents: 3348
diff changeset
4676 "Screenname formatting can change only capitalization and whitespace.", GAIM_ERROR);
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4677 }
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4678 }
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4679
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4680 static void oscar_do_action(struct gaim_connection *gc, char *act)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4681 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4682 struct oscar_data *od = gc->proto_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4683 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
4684
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4685 if (!strcmp(act, "Set User Info")) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4686 show_set_info(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4687 } else if (!strcmp(act, "Change Password")) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4688 show_change_passwd(gc);
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4689 } else if (!strcmp(act, "Format Screenname")) {
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4690 do_prompt_dialog("New screenname formatting:",
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4691 gc->displayname, gc, oscar_format_screenname, NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4692 } else if (!strcmp(act, "Confirm Account")) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4693 if (!conn) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4694 od->conf = TRUE;
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
4695 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4696 } else
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
4697 aim_admin_reqconfirm(od->sess, conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4698 } else if (!strcmp(act, "Display Current Registered Address")) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4699 if (!conn) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4700 od->reqemail = TRUE;
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
4701 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4702 } else
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
4703 aim_admin_getinfo(od->sess, conn, 0x11);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4704 } else if (!strcmp(act, "Change Current Registered Address")) {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4705 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
4706 } else if (!strcmp(act, "Search for Buddy by Email")) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4707 show_find_email(gc);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4708 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4709 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4710
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4711 static GList *oscar_actions()
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4712 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4713 GList *m = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4714
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4715 m = g_list_append(m, "Set User Info");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4716 m = g_list_append(m, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4717 m = g_list_append(m, "Change Password");
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4718 m = g_list_append(m, "Format Screenname");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4719 m = g_list_append(m, "Confirm Account");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4720 m = g_list_append(m, "Display Current Registered Address");
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4721 m = g_list_append(m, "Change Current Registered Address");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4722 m = g_list_append(m, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4723 m = g_list_append(m, "Search for Buddy by Email");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4724
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4725 return m;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4726 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4727
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
4728 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
4729 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4730 struct oscar_data *od = gc->proto_data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4731 if (!aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4732 od->chpass = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4733 od->oldp = g_strdup(old);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4734 od->newp = g_strdup(new);
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
4735 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4736 } else {
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
4737 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
4738 new, old);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4739 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4740 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4741
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4742 static void oscar_convo_closed(struct gaim_connection *gc, char *who)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4743 {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4744 struct oscar_data *od = gc->proto_data;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4745 struct direct_im *dim = find_direct_im(od, who);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4746
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4747 if (!dim)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4748 return;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4749
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4750 od->direct_ims = g_slist_remove(od->direct_ims, dim);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4751 gaim_input_remove(dim->watcher);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4752 aim_conn_kill(od->sess, &dim->conn);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4753 g_free(dim);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4754 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4755
3035
5354475cd3f6 [gaim-migrate @ 3048]
Rob Flynn <gaim@robflynn.com>
parents: 3034
diff changeset
4756
5354475cd3f6 [gaim-migrate @ 3048]
Rob Flynn <gaim@robflynn.com>
parents: 3034
diff changeset
4757
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4758 static struct prpl *my_protocol = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4759
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4760 G_MODULE_EXPORT void oscar_init(struct prpl *ret) {
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
4761 struct proto_user_opt *puo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4762 ret->protocol = PROTO_OSCAR;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4763 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
4764 ret->name = g_strdup("AIM/ICQ");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4765 ret->list_icon = oscar_list_icon;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4766 ret->away_states = oscar_away_states;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4767 ret->actions = oscar_actions;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4768 ret->do_action = oscar_do_action;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4769 ret->buddy_menu = oscar_buddy_menu;
3456
915542b9877e [gaim-migrate @ 3503]
Brian
parents: 3453
diff changeset
4770 ret->edit_buddy_menu = oscar_edit_buddy_menu;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4771 ret->login = oscar_login;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4772 ret->close = oscar_close;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4773 ret->send_im = oscar_send_im;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4774 ret->send_typing = oscar_send_typing;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4775 ret->set_info = oscar_set_info;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4776 ret->get_info = oscar_get_info;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4777 ret->set_away = oscar_set_away;
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4778 ret->get_away = oscar_get_away;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4779 ret->set_dir = oscar_set_dir;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4780 ret->get_dir = NULL; /* Oscar really doesn't have this */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4781 ret->dir_search = oscar_dir_search;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4782 ret->set_idle = oscar_set_idle;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4783 ret->change_passwd = oscar_change_passwd;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4784 ret->add_buddy = oscar_add_buddy;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4785 ret->add_buddies = oscar_add_buddies;
3140
168c622ed90d [gaim-migrate @ 3155]
Rob Flynn <gaim@robflynn.com>
parents: 3139
diff changeset
4786 ret->group_buddy = oscar_move_buddy;
3348
57ed471963ba [gaim-migrate @ 3367]
Mark Doliner <markdoliner@pidgin.im>
parents: 3316
diff changeset
4787 ret->rename_group = oscar_rename_group;
3771
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
4788 ret->file_transfer_cancel = oscar_file_transfer_cancel;
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
4789 ret->file_transfer_in = oscar_file_transfer_in;
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
4790 ret->file_transfer_out = oscar_file_transfer_out;
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
4791 ret->file_transfer_data_chunk = oscar_file_transfer_data_chunk;
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
4792 ret->file_transfer_nextfile = oscar_file_transfer_nextfile;
fc0f8f47fa58 [gaim-migrate @ 3910]
Rob Flynn <gaim@robflynn.com>
parents: 3768
diff changeset
4793 ret->file_transfer_done = oscar_file_transfer_done;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4794 ret->remove_buddy = oscar_remove_buddy;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
4795 ret->remove_buddies = oscar_remove_buddies;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4796 ret->add_permit = oscar_add_permit;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4797 ret->add_deny = oscar_add_deny;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4798 ret->rem_permit = oscar_rem_permit;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4799 ret->rem_deny = oscar_rem_deny;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4800 ret->set_permit_deny = oscar_set_permit_deny;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4801 ret->warn = oscar_warn;
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
4802 ret->chat_info = oscar_chat_info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4803 ret->join_chat = oscar_join_chat;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4804 ret->chat_invite = oscar_chat_invite;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4805 ret->chat_leave = oscar_chat_leave;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4806 ret->chat_whisper = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4807 ret->chat_send = oscar_chat_send;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4808 ret->keepalive = oscar_keepalive;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4809 ret->convo_closed = oscar_convo_closed;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4810
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
4811 puo = g_new0(struct proto_user_opt, 1);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
4812 puo->label = g_strdup("Auth Host:");
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
4813 puo->def = g_strdup("login.oscar.aol.com");
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
4814 puo->pos = USEROPT_AUTH;
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
4815 ret->user_opts = g_list_append(ret->user_opts, puo);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
4816
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
4817 puo = g_new0(struct proto_user_opt, 1);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
4818 puo->label = g_strdup("Auth Port:");
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
4819 puo->def = g_strdup("5190");
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
4820 puo->pos = USEROPT_AUTHPORT;
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
4821 ret->user_opts = g_list_append(ret->user_opts, puo);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
4822
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4823 my_protocol = ret;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4824 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4825
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4826 #ifndef STATIC
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4827
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4828 G_MODULE_EXPORT void gaim_prpl_init(struct prpl *prpl)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4829 {
3572
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
4830 oscar_init(prpl);
d07e14aa6f26 [gaim-migrate @ 3670]
Sean Egan <seanegan@pidgin.im>
parents: 3498
diff changeset
4831 prpl->plug->desc.api_version = PLUGIN_API_VERSION;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4832 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4833
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4834 #endif

mercurial