src/protocols/oscar/oscar.c

Tue, 12 Oct 2004 00:49:19 +0000

author
Stu Tomlinson <nosnilmot@pidgin.im>
date
Tue, 12 Oct 2004 00:49:19 +0000
changeset 10087
e5b80a38939d
parent 10042
b9091ec2b708
child 10096
2dba52b4a949
permissions
-rw-r--r--

[gaim-migrate @ 11098]
gaim_prefs_connect_callback() now takes a handle that can be used to disconnect
the callbacks later on. The callback id's remain, so people can still use those
if they want, although I'm not sure if there's any need for them any more.

I also switched the order for initializing the prefs subsystem and statically
compiled protocol plugins so that prpl prefs can work for statically compiled
prpls.

2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1 /*
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2 * gaim
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4 * Some code copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
6302
94b9c158969c [gaim-migrate @ 6801]
Brian Tarricon
parents: 6292
diff changeset
5 * Some code copyright (C) 1999-2001, Eric Warmenhoven
94b9c158969c [gaim-migrate @ 6801]
Brian Tarricon
parents: 6292
diff changeset
6 * Some code copyright (C) 2001-2003, Sean Egan
8151
195a587b6c32 [gaim-migrate @ 8863]
Mark Doliner <markdoliner@pidgin.im>
parents: 8150
diff changeset
7 * Some code copyright (C) 2001-2004, Mark Doliner <thekingant@users.sourceforge.net>
6302
94b9c158969c [gaim-migrate @ 6801]
Brian Tarricon
parents: 6292
diff changeset
8 *
94b9c158969c [gaim-migrate @ 6801]
Brian Tarricon
parents: 6292
diff changeset
9 * Most libfaim code copyright (C) 1998-2001 Adam Fritzler <afritz@auk.cx>
8151
195a587b6c32 [gaim-migrate @ 8863]
Mark Doliner <markdoliner@pidgin.im>
parents: 8150
diff changeset
10 * Some libfaim code copyright (C) 2001-2004 Mark Doliner <thekingant@users.sourceforge.net>
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
11 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
15 * (at your option) any later version.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
16 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
20 * GNU General Public License for more details.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
21 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
24 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
25 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
26 */
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
27 #include "internal.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
28
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
29 #include "account.h"
5638
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
30 #include "accountopt.h"
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
31 #include "buddyicon.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
32 #include "conversation.h"
7083
bdf557b0eea4 [gaim-migrate @ 7648]
Christian Hammond <chipx86@chipx86.com>
parents: 7082
diff changeset
33 #include "core.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
34 #include "debug.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
35 #include "ft.h"
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6907
diff changeset
36 #include "imgstore.h"
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents: 8227
diff changeset
37 #include "network.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
38 #include "notify.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
39 #include "privacy.h"
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
40 #include "prpl.h"
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
41 #include "proxy.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
42 #include "request.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
43 #include "util.h"
9943
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9942
diff changeset
44 #include "version.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
45
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
46 #include "aim.h"
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
47 #include "md5.h"
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
48
9976
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
49 #define OSCAR_STATUS_ID_INVISIBLE "invisible"
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
50 #define OSCAR_STATUS_ID_OFFLINE "offline"
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
51 #define OSCAR_STATUS_ID_ONLINE "online"
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
52 #define OSCAR_STATUS_ID_AVAILABLE "available"
9976
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
53 #define OSCAR_STATUS_ID_AWAY "away"
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
54 #define OSCAR_STATUS_ID_DND "dnd"
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
55 #define OSCAR_STATUS_ID_NA "na"
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
56 #define OSCAR_STATUS_ID_OCCUPIED "occupied"
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
57 #define OSCAR_STATUS_ID_FREE4CHAT "free4chat"
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
58 #define OSCAR_STATUS_ID_CUSTOM "custom"
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
59
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
60 #define AIMHASHDATA "http://gaim.sourceforge.net/aim_data.php3"
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
61
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
62 #define OSCAR_CONNECT_STEPS 6
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
63 #define OSCAR_DEFAULT_CUSTOM_ENCODING "ISO-8859-1"
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
64
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
65 static GaimPlugin *my_protocol = NULL;
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4246
diff changeset
66
7376
67d0debf3d8e [gaim-migrate @ 7971]
Mark Doliner <markdoliner@pidgin.im>
parents: 7366
diff changeset
67 static int caps_aim = AIM_CAPS_CHAT | AIM_CAPS_BUDDYICON | AIM_CAPS_DIRECTIM | AIM_CAPS_SENDFILE | AIM_CAPS_INTEROPERATE | AIM_CAPS_ICHAT;
67d0debf3d8e [gaim-migrate @ 7971]
Mark Doliner <markdoliner@pidgin.im>
parents: 7366
diff changeset
68 static int caps_icq = AIM_CAPS_BUDDYICON | AIM_CAPS_DIRECTIM | AIM_CAPS_SENDFILE | AIM_CAPS_ICQUTF8 | AIM_CAPS_INTEROPERATE | AIM_CAPS_ICHAT;
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
69
4665
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
70 static fu8_t features_aim[] = {0x01, 0x01, 0x01, 0x02};
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
71 static fu8_t features_icq[] = {0x01, 0x06};
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
72 static fu8_t ck[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
73
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
74 typedef struct _OscarData OscarData;
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
75 struct _OscarData {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
76 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
77 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
78
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
79 guint cnpa;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
80 guint paspa;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
81 guint emlpa;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
82 guint icopa;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
83
4823
e855589fb088 [gaim-migrate @ 5148]
Roald Dahl
parents: 4822
diff changeset
84 gboolean iconconnecting;
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
85 gboolean set_icon;
4823
e855589fb088 [gaim-migrate @ 5148]
Roald Dahl
parents: 4822
diff changeset
86
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
87 GSList *create_rooms;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
88
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
89 gboolean conf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
90 gboolean reqemail;
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
91 gboolean setemail;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
92 char *email;
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
93 gboolean setnick;
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
94 char *newsn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
95 gboolean chpass;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
96 char *oldp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
97 char *newp;
9971
8291bafb0025 [gaim-migrate @ 10882]
Daniel Atallah <datallah@pidgin.im>
parents: 9948
diff changeset
98
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
99 GSList *oscar_chats;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
100 GSList *direct_ims;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
101 GSList *file_transfers;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
102 GHashTable *buddyinfo;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
103 GSList *requesticon;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
104
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
105 gboolean killme;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
106 gboolean icq;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
107 guint icontimer;
5968
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
108 guint getblisttimer;
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
109 guint getinfotimer;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
110
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
111 struct {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
112 guint maxwatchers; /* max users who can watch you */
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
113 guint maxbuddies; /* max users you can watch */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
114 guint maxgroups; /* max groups in server list */
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
115 guint maxpermits; /* max users on permit list */
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
116 guint maxdenies; /* max users on deny list */
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
117 guint maxsiglen; /* max size (bytes) of profile */
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
118 guint maxawaymsglen; /* max size (bytes) of posted away message */
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
119 } rights;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
120 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
121
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
122 struct create_room {
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
123 char *name;
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
124 int exchange;
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
125 };
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
126
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
127 struct chat_connection {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
128 char *name;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
129 char *show; /* AOL did something funny to us */
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
130 fu16_t exchange;
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
131 fu16_t instance;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
132 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
133 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
134 int inpa;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
135 int id;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
136 GaimConnection *gc; /* i hate this. */
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
137 GaimConversation *conv; /* bah. */
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
138 int maxlen;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
139 int maxvis;
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
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
142 struct oscar_direct_im {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
143 GaimConnection *gc;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
144 char name[80];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
145 int watcher;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
146 aim_conn_t *conn;
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
147 gboolean connected;
8978
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
148 gboolean gpc_pend;
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
149 gboolean killme;
8984
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
150 gboolean donttryagain;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
151 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
152
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
153 struct ask_direct {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
154 GaimConnection *gc;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
155 char *sn;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
156 char ip[64];
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
157 fu8_t cookie[8];
8984
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
158 gboolean donttryagain;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
159 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
160
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
161 /*
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
162 * Various PRPL-specific buddy info that we want to keep track of
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
163 * Some other info is maintained by locate.c, and I'd like to move
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
164 * the rest of this to libfaim, mostly im.c
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
165 */
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
166 struct buddyinfo {
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
167 gboolean typingnot;
6292
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
168 gchar *availmsg;
6857
fd79da71b071 [gaim-migrate @ 7402]
Nickolai Zeldovich
parents: 6846
diff changeset
169 fu32_t ipaddr;
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
170
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
171 unsigned long ico_me_len;
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
172 unsigned long ico_me_csum;
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
173 time_t ico_me_time;
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
174 gboolean ico_informed;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
175
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
176 unsigned long ico_len;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
177 unsigned long ico_csum;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
178 time_t ico_time;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
179 gboolean ico_need;
7406
b0e59cabc315 [gaim-migrate @ 8006]
Sean Egan <seanegan@pidgin.im>
parents: 7389
diff changeset
180 gboolean ico_sent;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
181 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
182
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
183 struct name_data {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
184 GaimConnection *gc;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
185 gchar *name;
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
186 gchar *nick;
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
187 };
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
188
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
189 static char *msgerrreason[] = {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
190 N_("Invalid error"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
191 N_("Invalid SNAC"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
192 N_("Rate to host"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
193 N_("Rate to client"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
194 N_("Not logged in"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
195 N_("Service unavailable"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
196 N_("Service not defined"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
197 N_("Obsolete SNAC"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
198 N_("Not supported by host"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
199 N_("Not supported by client"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
200 N_("Refused by client"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
201 N_("Reply too big"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
202 N_("Responses lost"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
203 N_("Request denied"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
204 N_("Busted SNAC payload"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
205 N_("Insufficient rights"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
206 N_("In local permit/deny"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
207 N_("Too evil (sender)"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
208 N_("Too evil (receiver)"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
209 N_("User temporarily unavailable"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
210 N_("No match"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
211 N_("List overflow"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
212 N_("Request ambiguous"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
213 N_("Queue full"),
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
214 N_("Not while on AOL")
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
215 };
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
216 static int msgerrreasonlen = 25;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
217
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
218 /* All the libfaim->gaim callback functions */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
219 static int gaim_parse_auth_resp (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
220 static int gaim_parse_login (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
221 static int gaim_handle_redirect (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
222 static int gaim_info_change (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
223 static int gaim_account_confirm (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
224 static int gaim_parse_oncoming (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
225 static int gaim_parse_offgoing (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
226 static int gaim_parse_incoming_im(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
227 static int gaim_parse_misses (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
228 static int gaim_parse_clientauto (aim_session_t *, aim_frame_t *, ...);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
229 static int gaim_parse_userinfo (aim_session_t *, aim_frame_t *, ...);
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
230 static int gaim_reqinfo_timeout (aim_session_t *, aim_frame_t *, ...);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
231 static int gaim_parse_motd (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
232 static int gaim_chatnav_info (aim_session_t *, aim_frame_t *, ...);
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
233 static int gaim_conv_chat_join (aim_session_t *, aim_frame_t *, ...);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
234 static int gaim_conv_chat_leave (aim_session_t *, aim_frame_t *, ...);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
235 static int gaim_conv_chat_info_update (aim_session_t *, aim_frame_t *, ...);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
236 static int gaim_conv_chat_incoming_msg(aim_session_t *, aim_frame_t *, ...);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
237 static int gaim_email_parseupdate(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
238 static int gaim_icon_error (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
239 static int gaim_icon_parseicon (aim_session_t *, aim_frame_t *, ...);
5844
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
240 static int oscar_icon_req (aim_session_t *, aim_frame_t *, ...);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
241 static int gaim_parse_msgack (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
242 static int gaim_parse_ratechange (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
243 static int gaim_parse_evilnotify (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
244 static int gaim_parse_searcherror(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
245 static int gaim_parse_searchreply(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
246 static int gaim_bosrights (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
247 static int gaim_connerr (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
248 static int conninitdone_admin (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
249 static int conninitdone_bos (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
250 static int conninitdone_chatnav (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
251 static int conninitdone_chat (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
252 static int conninitdone_email (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
253 static int conninitdone_icon (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
254 static int gaim_parse_msgerr (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
255 static int gaim_parse_mtn (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
256 static int gaim_parse_locaterights(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
257 static int gaim_parse_buddyrights(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
258 static int gaim_parse_locerr (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
259 static int gaim_icbm_param_info (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
260 static int gaim_parse_genericerr (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
261 static int gaim_memrequest (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
262 static int gaim_selfinfo (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
263 static int gaim_offlinemsg (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
264 static int gaim_offlinemsgdone (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
265 static int gaim_icqalias (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
266 static int gaim_icqinfo (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
267 static int gaim_popup (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
268 #ifndef NOSSI
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
269 static int gaim_ssi_parseerr (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
270 static int gaim_ssi_parserights (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
271 static int gaim_ssi_parselist (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
272 static int gaim_ssi_parseack (aim_session_t *, aim_frame_t *, ...);
8227
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
273 static int gaim_ssi_parseadd (aim_session_t *, aim_frame_t *, ...);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
274 static int gaim_ssi_authgiven (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
275 static int gaim_ssi_authrequest (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
276 static int gaim_ssi_authreply (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
277 static int gaim_ssi_gotadded (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
278 #endif
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
279
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
280 /* for DirectIM/image transfer */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
281 static int gaim_odc_initiate (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
282 static int gaim_odc_incoming (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
283 static int gaim_odc_typing (aim_session_t *, aim_frame_t *, ...);
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6907
diff changeset
284 static int gaim_odc_update_ui (aim_session_t *, aim_frame_t *, ...);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
285
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
286 /* for file transfer */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
287 static int oscar_sendfile_estblsh(aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
288 static int oscar_sendfile_prompt (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
289 static int oscar_sendfile_ack (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
290 static int oscar_sendfile_done (aim_session_t *, aim_frame_t *, ...);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
291
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
292 static gboolean gaim_icon_timerfunc(gpointer data);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
293 static void oscar_callback(gpointer data, gint source, GaimInputCondition condition);
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
294 static void oscar_direct_im_initiate(GaimConnection *gc, const char *who, const char *cookie);
5954
58e43cf2dc1f [gaim-migrate @ 6398]
Mark Doliner <markdoliner@pidgin.im>
parents: 5948
diff changeset
295 static void oscar_set_info(GaimConnection *gc, const char *text);
9935
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
296 static void recent_buddies_cb(const char *name, GaimPrefType type, gpointer value, gpointer data);
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
297
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
298 static void oscar_free_name_data(struct name_data *data) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
299 g_free(data->name);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
300 g_free(data->nick);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
301 g_free(data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
302 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
303
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
304 static void oscar_free_buddyinfo(void *data) {
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
305 struct buddyinfo *bi = data;
6292
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
306 g_free(bi->availmsg);
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
307 g_free(bi);
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
308 }
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
309
9807
ff713acc7204 [gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents: 9806
diff changeset
310 static fu32_t oscar_charset_check(const char *utf8)
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
311 {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
312 int i = 0;
9826
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
313 int charset = AIM_CHARSET_ASCII;
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
314
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
315 /* Determine how we can send this message. Per the warnings elsewhere
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
316 * in this file, these little checks determine the simplest encoding
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
317 * we can use for a given message send using it. */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
318 while (utf8[i]) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
319 if ((unsigned char)utf8[i] > 0x7f) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
320 /* not ASCII! */
9826
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
321 charset = AIM_CHARSET_CUSTOM;
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
322 break;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
323 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
324 i++;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
325 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
326 while (utf8[i]) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
327 /* ISO-8859-1 is 0x00-0xbf in the first byte
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
328 * followed by 0xc0-0xc3 in the second */
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
329 if ((unsigned char)utf8[i] < 0x80) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
330 i++;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
331 continue;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
332 } else if (((unsigned char)utf8[i] & 0xfc) == 0xc0 &&
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
333 ((unsigned char)utf8[i + 1] & 0xc0) == 0x80) {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
334 i += 2;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
335 continue;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
336 }
9826
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
337 charset = AIM_CHARSET_UNICODE;
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
338 break;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
339 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
340
9807
ff713acc7204 [gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents: 9806
diff changeset
341 return charset;
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
342 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
343
8225
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
344 /*
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
345 * Take a string of the form charset="bleh" where bleh is
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
346 * one of us-ascii, utf-8, iso-8859-1, or unicode-2-0, and
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
347 * return a newly allocated string containing bleh.
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
348 */
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
349 static gchar *oscar_encoding_extract(const char *encoding)
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
350 {
8225
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
351 gchar *ret = NULL;
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
352 char *begin, *end;
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
353
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
354 g_return_val_if_fail(encoding != NULL, NULL);
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
355
8735
01248ea222d3 [gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents: 8733
diff changeset
356 /* Make sure encoding begins with charset= */
8225
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
357 if (strncmp(encoding, "text/aolrtf; charset=", 21))
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
358 return NULL;
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
359
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
360 begin = strchr(encoding, '"');
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
361 end = strrchr(encoding, '"');
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
362
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
363 if ((begin == NULL) || (end == NULL) || (begin >= end))
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
364 return NULL;
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
365
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
366 ret = g_strndup(begin+1, (end-1) - begin);
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
367
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
368 return ret;
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
369 }
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
370
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
371 static gchar *
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
372 oscar_encoding_to_utf8(const char *encoding, const char *text, int textlen)
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
373 {
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
374 gchar *utf8 = NULL;
9595
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
375
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
376 if ((encoding == NULL) || encoding[0] == '\0') {
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
377 gaim_debug_info("oscar", "Empty encoding, assuming UTF-8\n");
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
378
9639
bc07e077e00c [gaim-migrate @ 10487]
Ethan Blanton <elb@pidgin.im>
parents: 9638
diff changeset
379 } else if (!strcmp(encoding, "iso-8859-1")
bc07e077e00c [gaim-migrate @ 10487]
Ethan Blanton <elb@pidgin.im>
parents: 9638
diff changeset
380 || !strcmp(encoding, "ISO-8859-1-Windows-3.1-Latin-1")) {
9595
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
381 utf8 = g_convert(text, textlen, "UTF-8", "ISO-8859-1", NULL, NULL, NULL);
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
382
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
383 } else if (!strcmp(encoding, "unicode-2-0")) {
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
384 utf8 = g_convert(text, textlen, "UTF-8", "UCS-2BE", NULL, NULL, NULL);
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
385
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
386 } else if (strcmp(encoding, "us-ascii") && strcmp(encoding, "utf-8")) {
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
387 gaim_debug_warning("oscar", "Unrecognized character encoding \"%s\", "
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
388 "attempting to convert to UTF-8 anyway\n");
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
389 utf8 = g_convert(text, textlen, "UTF-8", encoding, NULL, NULL, NULL);
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
390 }
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
391
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
392 /*
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
393 * If utf8 is still NULL then either the encoding is us-ascii/utf-8 or
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
394 * we have been unable to convert the text to utf-8 from the encoding
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
395 * that was specified. So we check if the text is valid utf-8 then
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
396 * just copy it.
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
397 */
3860d7d423ca [gaim-migrate @ 10438]
Mark Doliner <markdoliner@pidgin.im>
parents: 9586
diff changeset
398 if (utf8 == NULL) {
9638
2f1f916d57af [gaim-migrate @ 10486]
Ethan Blanton <elb@pidgin.im>
parents: 9634
diff changeset
399 if (textlen != 0 && *text != '\0'
2f1f916d57af [gaim-migrate @ 10486]
Ethan Blanton <elb@pidgin.im>
parents: 9634
diff changeset
400 && !g_utf8_validate(text, textlen, NULL))
9908
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
401 utf8 = g_strdup(_("(There was an error receiving this message. The buddy you are speaking to most likely has a buggy client.)"));
9476
9e67e150526d [gaim-migrate @ 10301]
Ethan Blanton <elb@pidgin.im>
parents: 9475
diff changeset
402 else
9481
cde5948eae04 [gaim-migrate @ 10306]
Ethan Blanton <elb@pidgin.im>
parents: 9476
diff changeset
403 utf8 = g_strndup(text, textlen);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
404 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
405
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
406 return utf8;
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
407 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
408
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
409 static gchar *
9908
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
410 gaim_plugin_oscar_convert_to_utf8(const fu8_t *data, fu16_t datalen, const char *charsetstr, gboolean fallback)
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
411 {
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
412 gchar *ret = NULL;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
413 GError *err = NULL;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
414
9908
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
415 if ((charsetstr == NULL) || (*charsetstr == '\0'))
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
416 return NULL;
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
417
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
418 if (strcasecmp("UTF-8", charsetstr)) {
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
419 if (fallback)
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
420 ret = g_convert_with_fallback(data, datalen, "UTF-8", charsetstr, "?", NULL, NULL, &err);
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
421 else
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
422 ret = g_convert(data, datalen, "UTF-8", charsetstr, NULL, NULL, &err);
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
423 if (err != NULL) {
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
424 gaim_debug_warning("oscar", "Conversation from %s failed: %s.\n",
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
425 charsetstr, err->message);
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
426 g_error_free(err);
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
427 }
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
428 } else {
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
429 if (g_utf8_validate(data, datalen, NULL))
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
430 ret = g_strndup(data, datalen);
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
431 else
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
432 gaim_debug_warning("oscar", "String is not valid UTF-8.\n");
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
433 }
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
434
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
435 return ret;
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
436 }
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
437
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
438 /*
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
439 * We try decoding using two different character sets. The charset
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
440 * specified in the IM determines the order in which we attempt to
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
441 * decode. We do this because there are lots of broken ICQ clients
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
442 * that don't correctly send non-ASCII messages. And if Gaim isn't
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
443 * able to deal with that crap, then people complain like banshees.
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
444 * charsetstr1 is always set to what the correct encoding should be.
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
445 */
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
446 static gchar *
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
447 gaim_plugin_oscar_decode_im_part(GaimAccount *account, const char *sourcesn, fu16_t charset, fu16_t charsubset, fu8_t *data, fu16_t datalen)
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
448 {
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
449 gchar *ret = NULL;
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
450 const gchar *charsetstr1, *charsetstr2;
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
451
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
452 gaim_debug_info("oscar", "Parsing IM part, charset=0x%04hx, charsubset=0x%04hx, datalen=%hd\n", charset, charsubset, datalen);
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
453
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
454 if ((datalen == 0) || (data == NULL))
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
455 return NULL;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
456
9908
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
457 if (charset == AIM_CHARSET_UNICODE) {
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
458 charsetstr1 = "UCS-2BE";
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
459 charsetstr2 = "UTF-8";
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
460 } else if (charset == AIM_CHARSET_CUSTOM) {
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
461 if ((sourcesn != NULL) && aim_sn_is_icq(sourcesn))
9908
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
462 charsetstr1 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
463 else
9908
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
464 charsetstr1 = "ISO-8859-1";
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
465 charsetstr2 = "UTF-8";
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
466 } else if (charset == AIM_CHARSET_ASCII) {
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
467 /* Should just be "ASCII" */
9914
93b0188fc369 [gaim-migrate @ 10806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9908
diff changeset
468 charsetstr1 = "ASCII";
9908
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
469 charsetstr2 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
470 } else if (charset == 0x000d) {
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
471 /* Mobile AIM client on a Nokia 3100 and an LG VX6000 */
9908
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
472 charsetstr1 = "ISO-8859-1";
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
473 charsetstr2 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
474 } else {
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
475 /* Unknown, hope for valid UTF-8... */
9908
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
476 charsetstr1 = "UTF-8";
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
477 charsetstr2 = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
478 }
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
479
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
480 ret = gaim_plugin_oscar_convert_to_utf8(data, datalen, charsetstr1, FALSE);
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
481 if (ret == NULL)
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
482 ret = gaim_plugin_oscar_convert_to_utf8(data, datalen, charsetstr2, TRUE);
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
483 if (ret == NULL)
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
484 ret = g_strdup(_("(There was an error receiving this message. The buddy you are speaking to most likely has a buggy client.)"));
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
485
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
486 return ret;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
487 }
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
488
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
489 static void
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
490 gaim_plugin_oscar_convert_to_best_encoding(GaimConnection *gc, const char *destsn, const gchar *from,
10039
cb0a6cbd0023 [gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents: 10022
diff changeset
491 gchar **msg, int *msglen_int,
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
492 fu16_t *charset, fu16_t *charsubset)
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
493 {
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
494 OscarData *od = gc->proto_data;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
495 GaimAccount *account = gaim_connection_get_account(gc);
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
496 GError *err = NULL;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
497 aim_userinfo_t *userinfo = NULL;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
498 const gchar *charsetstr;
10039
cb0a6cbd0023 [gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents: 10022
diff changeset
499 gsize msglen;
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
500
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
501 /* Attempt to send as ASCII */
10039
cb0a6cbd0023 [gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents: 10022
diff changeset
502 *msg = g_convert(from, strlen(from), "ASCII", "UTF-8", NULL, &msglen, NULL);
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
503 if (*msg != NULL) {
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
504 *charset = AIM_CHARSET_ASCII;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
505 *charsubset = 0x0000;
10039
cb0a6cbd0023 [gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents: 10022
diff changeset
506 *msglen_int = msglen;
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
507 return;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
508 }
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
509
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
510 /*
9908
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
511 * If we're sending to an ICQ user, and they are advertising the
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
512 * Unicode capability, then attempt to send as UCS-2BE.
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
513 */
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
514 if ((destsn != NULL) && aim_sn_is_icq(destsn))
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
515 userinfo = aim_locate_finduserinfo(od->sess, destsn);
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
516
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
517 if ((userinfo != NULL) && (userinfo->capabilities & AIM_CAPS_ICQUTF8)) {
10039
cb0a6cbd0023 [gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents: 10022
diff changeset
518 *msg = g_convert(from, strlen(from), "UCS-2BE", "UTF-8", NULL, &msglen, NULL);
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
519 if (*msg != NULL) {
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
520 *charset = AIM_CHARSET_UNICODE;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
521 *charsubset = 0x0000;
10039
cb0a6cbd0023 [gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents: 10022
diff changeset
522 *msglen_int = msglen;
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
523 return;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
524 }
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
525 }
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
526
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
527 /*
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
528 * If this is AIM then attempt to send as ISO-8859-1. If this is
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
529 * ICQ then attempt to send as the user specified character encoding.
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
530 */
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
531 charsetstr = "ISO-8859-1";
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
532 if ((destsn != NULL) && aim_sn_is_icq(destsn))
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
533 charsetstr = gaim_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
534
10039
cb0a6cbd0023 [gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents: 10022
diff changeset
535 *msg = g_convert(from, strlen(from), charsetstr, "UTF-8", NULL, &msglen, NULL);
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
536 if (*msg != NULL) {
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
537 *charset = AIM_CHARSET_CUSTOM;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
538 *charsubset = 0x0000;
10039
cb0a6cbd0023 [gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents: 10022
diff changeset
539 *msglen_int = msglen;
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
540 return;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
541 }
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
542
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
543 /*
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
544 * Nothing else worked, so send as UCS-2BE.
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
545 */
10039
cb0a6cbd0023 [gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents: 10022
diff changeset
546 *msg = g_convert(from, strlen(from), "UCS-2BE", "UTF-8", NULL, &msglen, &err);
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
547 if (*msg != NULL) {
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
548 *charset = AIM_CHARSET_UNICODE;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
549 *charsubset = 0x0000;
10039
cb0a6cbd0023 [gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents: 10022
diff changeset
550 *msglen_int = msglen;
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
551 return;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
552 }
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
553
9908
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
554 gaim_debug_error("oscar", "Error converting a Unicode message: %s\n", err->message);
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
555 g_error_free(err);
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
556
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
557 gaim_debug_error("oscar", "This should NEVER happen! Sending UTF-8 text flagged as ASCII.\n");
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
558 *msg = g_strdup(from);
10039
cb0a6cbd0023 [gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents: 10022
diff changeset
559 *msglen_int = strlen(*msg);
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
560 *charset = AIM_CHARSET_ASCII;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
561 *charsubset = 0x0000;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
562 return;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
563 }
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
564
9407
51d14211393c [gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents: 9381
diff changeset
565 gchar *oscar_caps_to_string(guint caps)
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
566 {
9407
51d14211393c [gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents: 9381
diff changeset
567 GString *str;
51d14211393c [gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents: 9381
diff changeset
568 gchar *tmp;
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
569 guint bit = 1;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
570
9407
51d14211393c [gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents: 9381
diff changeset
571 str = g_string_new("");
51d14211393c [gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents: 9381
diff changeset
572
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
573 if (!caps) {
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
574 return NULL;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
575 } else while (bit <= AIM_CAPS_LAST) {
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
576 if (bit & caps) {
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
577 switch (bit) {
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
578 case AIM_CAPS_BUDDYICON:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
579 tmp = _("Buddy Icon");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
580 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
581 case AIM_CAPS_TALK:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
582 tmp = _("Voice");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
583 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
584 case AIM_CAPS_DIRECTIM:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
585 tmp = _("AIM Direct IM");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
586 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
587 case AIM_CAPS_CHAT:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
588 tmp = _("Chat");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
589 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
590 case AIM_CAPS_GETFILE:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
591 tmp = _("Get File");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
592 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
593 case AIM_CAPS_SENDFILE:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
594 tmp = _("Send File");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
595 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
596 case AIM_CAPS_GAMES:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
597 case AIM_CAPS_GAMES2:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
598 tmp = _("Games");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
599 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
600 case AIM_CAPS_ADDINS:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
601 tmp = _("Add-Ins");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
602 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
603 case AIM_CAPS_SENDBUDDYLIST:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
604 tmp = _("Send Buddy List");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
605 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
606 case AIM_CAPS_ICQ_DIRECT:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
607 tmp = _("ICQ Direct Connect");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
608 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
609 case AIM_CAPS_APINFO:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
610 tmp = _("AP User");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
611 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
612 case AIM_CAPS_ICQRTF:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
613 tmp = _("ICQ RTF");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
614 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
615 case AIM_CAPS_EMPTY:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
616 tmp = _("Nihilist");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
617 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
618 case AIM_CAPS_ICQSERVERRELAY:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
619 tmp = _("ICQ Server Relay");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
620 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
621 case AIM_CAPS_ICQUTF8OLD:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
622 tmp = _("Old ICQ UTF8");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
623 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
624 case AIM_CAPS_TRILLIANCRYPT:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
625 tmp = _("Trillian Encryption");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
626 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
627 case AIM_CAPS_ICQUTF8:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
628 tmp = _("ICQ UTF8");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
629 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
630 case AIM_CAPS_HIPTOP:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
631 tmp = _("Hiptop");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
632 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
633 case AIM_CAPS_SECUREIM:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
634 tmp = _("Security Enabled");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
635 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
636 case AIM_CAPS_VIDEO:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
637 tmp = _("Video Chat");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
638 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
639 /* Not actually sure about this one... WinAIM doesn't show anything */
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
640 case AIM_CAPS_ICHATAV:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
641 tmp = _("iChat AV");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
642 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
643 case AIM_CAPS_LIVEVIDEO:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
644 tmp = _("Live Video");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
645 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
646 case AIM_CAPS_CAMERA:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
647 tmp = _("Camera");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
648 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
649 default:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
650 tmp = NULL;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
651 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
652 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
653 if (tmp)
9532
32470c5a1d58 [gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 9481
diff changeset
654 g_string_append_printf(str, "%s%s", (*(str->str) == '\0' ? "" : ", "), tmp);
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
655 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
656 bit <<= 1;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
657 }
9407
51d14211393c [gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents: 9381
diff changeset
658
51d14211393c [gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents: 9381
diff changeset
659 return g_string_free(str, FALSE);
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
660 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
661
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
662 static char *oscar_icqstatus(int state) {
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
663 /* Make a cute little string that shows the status of the dude or dudet */
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
664 if (state & AIM_ICQ_STATE_CHAT)
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
665 return g_strdup_printf(_("Free For Chat"));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
666 else if (state & AIM_ICQ_STATE_DND)
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
667 return g_strdup_printf(_("Do Not Disturb"));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
668 else if (state & AIM_ICQ_STATE_OUT)
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
669 return g_strdup_printf(_("Not Available"));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
670 else if (state & AIM_ICQ_STATE_BUSY)
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
671 return g_strdup_printf(_("Occupied"));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
672 else if (state & AIM_ICQ_STATE_AWAY)
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
673 return g_strdup_printf(_("Away"));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
674 else if (state & AIM_ICQ_STATE_WEBAWARE)
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
675 return g_strdup_printf(_("Web Aware"));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
676 else if (state & AIM_ICQ_STATE_INVISIBLE)
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
677 return g_strdup_printf(_("Invisible"));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
678 else
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
679 return g_strdup_printf(_("Online"));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
680 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
681
9973
e163f8e7e8a4 [gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents: 9972
diff changeset
682 static void
e163f8e7e8a4 [gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents: 9972
diff changeset
683 oscar_string_append(GString *str, const char *newline, const char *name, const char *value)
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
684 {
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
685 gchar *utf8;
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
686
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
687 if (value && value[0] && (utf8 = gaim_utf8_try_convert(value))) {
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
688 g_string_append_printf(str, "%s<b>%s:</b> %s", newline, name, utf8);
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
689 g_free(utf8);
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
690 }
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
691 }
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
692
9973
e163f8e7e8a4 [gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents: 9972
diff changeset
693 static void oscar_string_append_info(GaimConnection *gc, GString *str, const char *newline, GaimBuddy *b, aim_userinfo_t *userinfo)
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
694 {
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
695 OscarData *od;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
696 GaimAccount *account;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
697 GaimPresence *presence;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
698 GaimPresence *buddy_presence;
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
699 GaimGroup *g = NULL;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
700 struct buddyinfo *bi = NULL;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
701 char *tmp;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
702
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
703 od = gc->proto_data;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
704 account = gaim_connection_get_account(gc);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
705 presence = gaim_account_get_presence(account);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
706 buddy_presence = gaim_buddy_get_presence(b);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
707
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
708 if ((str == NULL) || (newline == NULL) || ((b == NULL) && (userinfo == NULL)))
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
709 return;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
710
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
711 if (userinfo == NULL)
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
712 userinfo = aim_locate_finduserinfo(od->sess, b->name);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
713
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
714 if (b == NULL)
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
715 b = gaim_find_buddy(account, userinfo->sn);
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
716
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
717 if (b != NULL)
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
718 g = gaim_find_buddys_group(b);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
719
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
720 if (userinfo != NULL)
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
721 bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(account, userinfo->sn));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
722
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
723 if (b != NULL) {
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
724 if (gaim_presence_is_online(buddy_presence)) {
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
725 if (aim_sn_is_icq(b->name)) {
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
726 tmp = oscar_icqstatus((b->uc & 0xffff0000) >> 16);
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
727 oscar_string_append(str, newline, _("Status"), tmp);
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
728 g_free(tmp);
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
729 }
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
730 } else {
9625
f2cda8836eb9 [gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents: 9620
diff changeset
731 tmp = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name);
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
732 if (aim_ssi_waitingforauth(od->sess->ssi.local, tmp, b->name))
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
733 oscar_string_append(str, newline, _("Status"), _("Not Authorized"));
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
734 else
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
735 oscar_string_append(str, newline, _("Status"), _("Offline"));
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
736 }
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
737 }
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
738
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
739 if ((bi != NULL) && (bi->ipaddr != 0)) {
9625
f2cda8836eb9 [gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents: 9620
diff changeset
740 tmp = g_strdup_printf("%hhu.%hhu.%hhu.%hhu",
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
741 (bi->ipaddr & 0xff000000) >> 24,
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
742 (bi->ipaddr & 0x00ff0000) >> 16,
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
743 (bi->ipaddr & 0x0000ff00) >> 8,
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
744 (bi->ipaddr & 0x000000ff));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
745 oscar_string_append(str, newline, _("IP Address"), tmp);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
746 g_free(tmp);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
747 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
748
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
749 if ((userinfo != NULL) && (userinfo->capabilities != 0)) {
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
750 tmp = oscar_caps_to_string(userinfo->capabilities);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
751 oscar_string_append(str, newline, _("Capabilities"), tmp);
9407
51d14211393c [gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents: 9381
diff changeset
752 g_free(tmp);
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
753 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
754
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
755 if ((b != NULL) && (b->name != NULL) && (g != NULL) && (g->name != NULL)) {
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
756 tmp = aim_ssi_getcomment(od->sess->ssi.local, g->name, b->name);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
757 if (tmp != NULL) {
9625
f2cda8836eb9 [gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents: 9620
diff changeset
758 char *tmp2 = g_markup_escape_text(tmp, strlen(tmp));
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
759 g_free(tmp);
9625
f2cda8836eb9 [gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents: 9620
diff changeset
760 oscar_string_append(str, newline, _("Buddy Comment"), tmp2);
f2cda8836eb9 [gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents: 9620
diff changeset
761 g_free(tmp2);
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
762 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
763 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
764
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
765 if ((bi != NULL) && (bi->availmsg != NULL) && gaim_presence_is_available(presence)) {
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
766 tmp = g_markup_escape_text(bi->availmsg, strlen(bi->availmsg));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
767 oscar_string_append(str, newline, _("Available"), tmp);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
768 g_free(tmp);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
769 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
770 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
771
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
772 static char *extract_name(const char *name) {
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
773 char *tmp, *x;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
774 int i, j;
4120
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
775
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
776 if (!name)
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
777 return NULL;
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
778
4120
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
779 x = strchr(name, '-');
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
780
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
781 if (!x) return NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
782 x = strchr(++x, '-');
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
783 if (!x) return NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
784 tmp = g_strdup(++x);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
785
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
786 for (i = 0, j = 0; x[i]; i++) {
2361
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
787 char hex[3];
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
788 if (x[i] != '%') {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
789 tmp[j++] = x[i];
2361
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
790 continue;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
791 }
2361
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
792 strncpy(hex, x + ++i, 2); hex[2] = 0;
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
793 i++;
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
794 tmp[j++] = strtol(hex, NULL, 16);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
795 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
796
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
797 tmp[j] = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
798 return tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
799 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
800
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
801 static struct chat_connection *find_oscar_chat(GaimConnection *gc, int id) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
802 GSList *g = ((OscarData *)gc->proto_data)->oscar_chats;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
803 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
804
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
805 while (g) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
806 c = (struct chat_connection *)g->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
807 if (c->id == id)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
808 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
809 g = g->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
810 c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
811 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
812
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
813 return c;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
814 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
815
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
816 static struct chat_connection *find_oscar_chat_by_conn(GaimConnection *gc,
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
817 aim_conn_t *conn) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
818 GSList *g = ((OscarData *)gc->proto_data)->oscar_chats;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
819 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
820
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
821 while (g) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
822 c = (struct chat_connection *)g->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
823 if (c->conn == conn)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
824 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
825 g = g->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
826 c = NULL;
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
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
829 return c;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
830 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
831
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
832 static struct chat_connection *find_oscar_chat_by_conv(GaimConnection *gc,
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
833 GaimConversation *conv) {
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
834 GSList *g = ((OscarData *)gc->proto_data)->oscar_chats;
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
835 struct chat_connection *c = NULL;
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
836
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
837 while (g) {
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
838 c = (struct chat_connection *)g->data;
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
839 if (c->conv == conv)
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
840 break;
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
841 g = g->next;
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
842 c = NULL;
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
843 }
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
844
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
845 return c;
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
846 }
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
847
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
848 /*****************************************************************************
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
849 * Begin scary direct im stuff
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
850 *****************************************************************************/
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
851
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
852 static struct oscar_direct_im *oscar_direct_im_find(OscarData *od, const char *who) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
853 GSList *d = od->direct_ims;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
854 struct oscar_direct_im *m = NULL;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
855
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
856 while (d) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
857 m = (struct oscar_direct_im *)d->data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
858 if (!aim_sncmp(who, m->name))
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
859 return m;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
860 d = d->next;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
861 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
862
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
863 return NULL;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
864 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
865
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
866 static void oscar_direct_im_destroy(OscarData *od, struct oscar_direct_im *dim)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
867 {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
868 gaim_debug_info("oscar",
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
869 "destroying Direct IM for %s.\n", dim->name);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
870
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
871 od->direct_ims = g_slist_remove(od->direct_ims, dim);
8978
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
872 if (dim->gpc_pend) {
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
873 dim->killme = TRUE;
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
874 return;
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
875 }
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
876 if (dim->watcher)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
877 gaim_input_remove(dim->watcher);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
878 if (dim->conn) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
879 aim_conn_close(dim->conn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
880 aim_conn_kill(od->sess, &dim->conn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
881 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
882 g_free(dim);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
883 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
884
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
885 /* the only difference between this and destroy is this writes a conv message */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
886 static void oscar_direct_im_disconnect(OscarData *od, struct oscar_direct_im *dim)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
887 {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
888 GaimConversation *conv;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
889 char buf[256];
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
890
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
891 gaim_debug_info("oscar",
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
892 "%s disconnected Direct IM.\n", dim->name);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
893
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
894 if (dim->connected)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
895 g_snprintf(buf, sizeof buf, _("Direct IM with %s closed"), dim->name);
8978
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
896 else
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
897 g_snprintf(buf, sizeof buf, _("Direct IM with %s failed"), dim->name);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
898
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
899 conv = gaim_find_conversation_with_account(dim->name, gaim_connection_get_account(dim->gc));
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
900 if (conv) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
901 gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_SYSTEM, time(NULL));
9463
d0dcc391c32b [gaim-migrate @ 10288]
Mark Doliner <markdoliner@pidgin.im>
parents: 9455
diff changeset
902 gaim_conversation_update_progress(conv, 0);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
903 } else {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
904 gaim_notify_error(dim->gc, NULL, _("Direct Connect failed"), buf);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
905 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
906
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
907 oscar_direct_im_destroy(od, dim);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
908
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
909 return;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
910 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
911
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
912 /* oops i made two of these. this one just calls the other one. */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
913 static void gaim_odc_disconnect(aim_session_t *sess, aim_conn_t *conn)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
914 {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
915 GaimConnection *gc = sess->aux_data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
916 OscarData *od = (OscarData *)gc->proto_data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
917 struct oscar_direct_im *dim;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
918 char *sn;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
919
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
920 sn = g_strdup(aim_odc_getsn(conn));
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
921 dim = oscar_direct_im_find(od, sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
922 oscar_direct_im_disconnect(od, dim);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
923 g_free(sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
924 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
925
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
926 static void destroy_direct_im_request(struct ask_direct *d) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
927 gaim_debug_info("oscar", "Freeing DirectIM prompts.\n");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
928
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
929 g_free(d->sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
930 g_free(d);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
931 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
932
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
933 /* this is just a gaim_proxy_connect cb that sets up the rest of the cbs */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
934 static void oscar_odc_callback(gpointer data, gint source, GaimInputCondition condition) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
935 struct oscar_direct_im *dim = data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
936 GaimConnection *gc = dim->gc;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
937 OscarData *od = gc->proto_data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
938 GaimConversation *conv;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
939 char buf[256];
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
940 struct sockaddr name;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
941 socklen_t name_len = 1;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
942
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
943 g_return_if_fail(gc != NULL);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
944
8978
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
945 dim->gpc_pend = FALSE;
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
946 if (dim->killme) {
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
947 oscar_direct_im_destroy(od, dim);
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
948 return;
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
949 }
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
950
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
951 if (!g_list_find(gaim_connections_get_all(), gc)) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
952 oscar_direct_im_destroy(od, dim);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
953 return;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
954 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
955
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
956 if (source < 0) {
8984
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
957 if (dim->donttryagain) {
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
958 oscar_direct_im_disconnect(od, dim);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
959 return;
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
960 } else {
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
961 fu8_t cookie[8];
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
962 char *who = g_strdup(dim->name);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
963 const char *tmp = aim_odc_getcookie(dim->conn);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
964
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
965 memcpy(cookie, tmp, 8);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
966 oscar_direct_im_destroy(od, dim);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
967 oscar_direct_im_initiate(gc, who, cookie);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
968 gaim_debug_info("oscar", "asking direct im initiator to connect to us\n");
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
969 g_free(who);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
970 return;
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
971 }
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
972 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
973
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
974 dim->conn->fd = source;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
975 aim_conn_completeconnect(od->sess, dim->conn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
976 conv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, dim->name);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
977
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
978 /* This is the best way to see if we're connected or not */
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
979 /* Is this really needed? */
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
980 if (getpeername(source, &name, &name_len) == 0) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
981 g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), dim->name);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
982 dim->connected = TRUE;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
983 gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_SYSTEM, time(NULL));
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
984 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, oscar_callback, dim->conn);
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
985 } else {
8984
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
986 if (dim->donttryagain) {
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
987 oscar_direct_im_disconnect(od, dim);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
988 return;
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
989 } else {
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
990 fu8_t cookie[8];
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
991 char *who = g_strdup(dim->name);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
992 const char *tmp = aim_odc_getcookie(dim->conn);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
993
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
994 memcpy(cookie, tmp, 8);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
995 oscar_direct_im_destroy(od, dim);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
996 oscar_direct_im_initiate(gc, who, cookie);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
997 gaim_debug_info("oscar", "asking direct im initiator to connect to us\n");
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
998 g_free(who);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
999 return;
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1000 }
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1001 }
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1002
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1003
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1004 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1005
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1006 static void accept_direct_im_request(struct ask_direct *d) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1007 GaimConnection *gc = d->gc;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1008 OscarData *od;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1009 struct oscar_direct_im *dim;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1010 char *host; int port = 5190;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1011 int i, rc;
8982
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1012 char *tmp;
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1013 GaimConversation *conv;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1014
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1015 if (!g_list_find(gaim_connections_get_all(), gc)) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1016 destroy_direct_im_request(d);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1017 return;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1018 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1019
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1020 od = (OscarData *)gc->proto_data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1021 gaim_debug_info("oscar", "Accepted DirectIM.\n");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1022
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1023 dim = oscar_direct_im_find(od, d->sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1024 if (dim && dim->connected) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1025 destroy_direct_im_request(d); /* 40 */ /* what does that 40 mean? */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1026 gaim_debug_info("oscar", "Wait, we're already connected, ignoring DirectIM.\n");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1027 return;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1028 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1029 dim = g_new0(struct oscar_direct_im, 1);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1030 dim->gc = d->gc;
8984
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1031 dim->donttryagain = d->donttryagain;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1032 g_snprintf(dim->name, sizeof dim->name, "%s", d->sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1033
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1034 dim->conn = aim_odc_connect(od->sess, d->sn, NULL, d->cookie);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1035 od->direct_ims = g_slist_append(od->direct_ims, dim);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1036 if (!dim->conn) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1037 oscar_direct_im_disconnect(od, dim);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1038 destroy_direct_im_request(d);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1039 return;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1040 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1041
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1042 aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING,
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1043 gaim_odc_incoming, 0);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1044 aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING,
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1045 gaim_odc_typing, 0);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1046 aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_IMAGETRANSFER,
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1047 gaim_odc_update_ui, 0);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1048
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1049 gaim_debug_info("oscar", "ip is %s.\n", d->ip);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1050 for (i = 0; i < (int)strlen(d->ip); i++) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1051 if (d->ip[i] == ':') {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1052 port = atoi(&(d->ip[i+1]));
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1053 break;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1054 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1055 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1056 host = g_strndup(d->ip, i);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1057 dim->conn->status |= AIM_CONN_STATUS_INPROGRESS;
8978
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
1058 dim->gpc_pend = TRUE;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1059 rc = gaim_proxy_connect(gc->account, host, port, oscar_odc_callback, dim);
8982
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1060
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1061 conv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, d->sn);
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1062 tmp = g_strdup_printf(_("Attempting to connect to %s at %s:%hu for Direct IM."), d->sn, host,
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1063 port);
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1064 gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, time(NULL));
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1065 g_free(tmp);
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1066
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1067 g_free(host);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1068 if (rc < 0) {
8978
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
1069 dim->gpc_pend = FALSE;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1070 oscar_direct_im_disconnect(od, dim);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1071 destroy_direct_im_request(d);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1072 return;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1073 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1074
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1075 destroy_direct_im_request(d);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1076
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1077 return;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1078 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1079
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1080 /*
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1081 * We have just established a socket with the other dude, so set up some handlers.
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1082 */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1083 static int gaim_odc_initiate(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1084 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1085 OscarData *od = (OscarData *)gc->proto_data;
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
1086 GaimConversation *conv;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1087 struct oscar_direct_im *dim;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1088 char buf[256];
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1089 char *sn;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1090 va_list ap;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1091 aim_conn_t *newconn, *listenerconn;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1092
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1093 va_start(ap, fr);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1094 newconn = va_arg(ap, aim_conn_t *);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1095 listenerconn = va_arg(ap, aim_conn_t *);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1096 va_end(ap);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1097
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1098 aim_conn_close(listenerconn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1099 aim_conn_kill(sess, &listenerconn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1100
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1101 sn = g_strdup(aim_odc_getsn(newconn));
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1102
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1103 gaim_debug_info("oscar",
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1104 "DirectIM: initiate success to %s\n", sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1105 dim = oscar_direct_im_find(od, sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1106
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1107 conv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1108 gaim_input_remove(dim->watcher);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1109 dim->conn = newconn;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1110 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, oscar_callback, dim->conn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1111 dim->connected = TRUE;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1112 g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1113 g_free(sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1114 gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_SYSTEM, time(NULL));
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1115
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1116 aim_conn_addhandler(sess, newconn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING, gaim_odc_incoming, 0);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1117 aim_conn_addhandler(sess, newconn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING, gaim_odc_typing, 0);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1118 aim_conn_addhandler(sess, newconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_IMAGETRANSFER, gaim_odc_update_ui, 0);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1119
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1120 return 1;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1121 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1122
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1123 /*
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1124 * This is called when each chunk of an image is received. It can be used to
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1125 * update a progress bar, or to eat lots of dry cat food. Wet cat food is
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1126 * nasty, you sicko.
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1127 */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1128 static int gaim_odc_update_ui(aim_session_t *sess, aim_frame_t *fr, ...) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1129 va_list ap;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1130 char *sn;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1131 double percent;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1132 GaimConnection *gc = sess->aux_data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1133 OscarData *od = (OscarData *)gc->proto_data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1134 GaimConversation *c;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1135 struct oscar_direct_im *dim;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1136
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1137 va_start(ap, fr);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1138 sn = va_arg(ap, char *);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1139 percent = va_arg(ap, double);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1140 va_end(ap);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1141
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1142 if (!sn || !(dim = oscar_direct_im_find(od, sn)))
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1143 return 1;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1144 if (dim->watcher) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1145 gaim_input_remove(dim->watcher); /* Otherwise, the callback will callback */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1146 /* The callback will callback? I don't get how that would happen here. */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1147 dim->watcher = 0;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1148 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1149
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1150 c = gaim_find_conversation_with_account(sn, gaim_connection_get_account(gc));
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1151 if (c != NULL)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1152 gaim_conversation_update_progress(c, percent);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1153 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1154 oscar_callback, dim->conn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1155
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1156 return 1;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1157 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1158
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1159 /*
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1160 * This is called after a direct IM has been received in its entirety. This
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1161 * function is passed a long chunk of data which contains the IM with any
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1162 * data chunks (images) appended to it.
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1163 *
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1164 * This function rips out all the data chunks and creates an imgstore for
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1165 * each one. In order to do this, it first goes through the IM and takes
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1166 * out all the IMG tags. When doing so, it rewrites the original IMG tag
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1167 * with one compatible with the imgstore Gaim core code. For each one, we
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1168 * then read in chunks of data from the end of the message and actually
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1169 * create the img store using the given data.
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1170 *
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1171 * For somewhat easy reference, here's a sample message
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1172 * (without the whitespace and asterisks):
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1173 *
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1174 * <HTML><BODY BGCOLOR="#ffffff">
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1175 * <FONT LANG="0">
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1176 * This is a really stupid picture:<BR>
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1177 * <IMG SRC="Sample.jpg" ID="1" WIDTH="283" HEIGHT="212" DATASIZE="9894"><BR>
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1178 * Yeah it is<BR>
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1179 * Here is another one:<BR>
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1180 * <IMG SRC="Soap Bubbles.bmp" ID="2" WIDTH="256" HEIGHT="256" DATASIZE="65978">
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1181 * </FONT>
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1182 * </BODY></HTML>
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1183 * <BINARY>
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1184 * <DATA ID="1" SIZE="9894">datadatadatadata</DATA>
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1185 * <DATA ID="2" SIZE="65978">datadatadatadata</DATA>
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1186 * </BINARY>
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1187 */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1188 static int gaim_odc_incoming(aim_session_t *sess, aim_frame_t *fr, ...) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1189 GaimConnection *gc = sess->aux_data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1190 GaimConvImFlags imflags = 0;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1191 gchar *utf8;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1192 GString *newmsg = g_string_new("");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1193 GSList *images = NULL;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1194 va_list ap;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1195 const char *sn, *msg, *msgend, *binary;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1196 size_t len;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1197 int encoding, isawaymsg;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1198
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1199 va_start(ap, fr);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1200 sn = va_arg(ap, const char *);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1201 msg = va_arg(ap, const char *);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1202 len = va_arg(ap, size_t);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1203 encoding = va_arg(ap, int);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1204 isawaymsg = va_arg(ap, int);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1205 va_end(ap);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1206 msgend = msg + len;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1207
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1208 gaim_debug_info("oscar",
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1209 "Got DirectIM message from %s\n", sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1210
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1211 if (isawaymsg)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1212 imflags |= GAIM_CONV_IM_AUTO_RESP;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1213
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1214 /* message has a binary trailer */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1215 if ((binary = gaim_strcasestr(msg, "<binary>"))) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1216 GData *attribs;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1217 const char *tmp, *start, *end, *last = NULL;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1218
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1219 tmp = msg;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1220
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1221 /* for each valid image tag... */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1222 while (gaim_markup_find_tag("img", tmp, &start, &end, &attribs)) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1223 const char *id, *src, *datasize;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1224 const char *tag = NULL, *data = NULL;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1225 size_t size;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1226 int imgid = 0;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1227
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1228 /* update the location of the last img tag */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1229 last = end;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1230
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1231 /* grab attributes */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1232 id = g_datalist_get_data(&attribs, "id");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1233 src = g_datalist_get_data(&attribs, "src");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1234 datasize = g_datalist_get_data(&attribs, "datasize");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1235
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1236 /* if we have id & datasize, build the data tag */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1237 if (id && datasize)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1238 tag = g_strdup_printf("<data id=\"%s\" size=\"%s\">", id, datasize);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1239
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1240 /* if we have a tag, find the start of the data */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1241 if (tag && (data = gaim_strcasestr(binary, tag)))
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1242 data += strlen(tag);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1243
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1244 /* check the data is here and store it */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1245 if (data + (size = atoi(datasize)) <= msgend)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1246 imgid = gaim_imgstore_add(data, size, src);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1247
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1248 /*
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1249 * XXX - The code below contains some calls to oscar_encoding_to_utf8
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1250 * The hardcoded "us-ascii" value REALLY needs to be removed.
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1251 */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1252 /* if we have a stored image... */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1253 if (imgid) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1254 /* append the message up to the tag */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1255 utf8 = oscar_encoding_to_utf8("us-ascii", tmp, start - tmp);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1256 if (utf8 != NULL) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1257 newmsg = g_string_append(newmsg, utf8);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1258 g_free(utf8);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1259 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1260
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1261 /* write the new image tag */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1262 g_string_append_printf(newmsg, "<IMG ID=\"%d\">", imgid);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1263
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1264 /* and record the image number */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1265 images = g_slist_append(images, GINT_TO_POINTER(imgid));
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1266 } else {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1267 /* otherwise, copy up to the end of the tag */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1268 utf8 = oscar_encoding_to_utf8("us-ascii", tmp, (end + 1) - tmp);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1269 if (utf8 != NULL) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1270 newmsg = g_string_append(newmsg, utf8);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1271 g_free(utf8);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1272 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1273 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1274
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1275 /* clear the attribute list */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1276 g_datalist_clear(&attribs);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1277
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1278 /* continue from the end of the tag */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1279 tmp = end + 1;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1280 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1281
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1282 /* append any remaining message data (without the > :-) */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1283 if (last++ && (last < binary))
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1284 newmsg = g_string_append_len(newmsg, last, binary - last);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1285
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1286 /* set the flag if we caught any images */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1287 if (images)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1288 imflags |= GAIM_CONV_IM_IMAGES;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1289 } else {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1290 g_string_append_len(newmsg, msg, len);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1291 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1292
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1293 /* XXX - I imagine Paco-Paco will want to do some voodoo with the encoding here */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1294 serv_got_im(gc, sn, newmsg->str, imflags, time(NULL));
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1295
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1296 /* free up the message */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1297 g_string_free(newmsg, TRUE);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1298
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1299 /* unref any images we allocated */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1300 if (images) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1301 GSList *tmp;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1302 int id;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1303
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1304 for (tmp = images; tmp != NULL; tmp = tmp->next) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1305 id = GPOINTER_TO_INT(tmp->data);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1306 gaim_imgstore_unref(id);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1307 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1308
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1309 g_slist_free(images);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1310 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1311
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1312 return 1;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1313 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1314
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1315 static int gaim_odc_typing(aim_session_t *sess, aim_frame_t *fr, ...) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1316 va_list ap;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1317 char *sn;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1318 int typing;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1319 GaimConnection *gc = sess->aux_data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1320
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1321 va_start(ap, fr);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1322 sn = va_arg(ap, char *);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1323 typing = va_arg(ap, int);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1324 va_end(ap);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1325
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1326 if (typing == 0x0002) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1327 /* I had to leave this. It's just too funny. It reminds me of my sister. */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1328 gaim_debug_info("oscar",
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1329 "ohmigod! %s has started typing (DirectIM). He's going to send you a message! *squeal*\n", sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1330 serv_got_typing(gc, sn, 0, GAIM_TYPING);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1331 } else if (typing == 0x0001)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1332 serv_got_typing(gc, sn, 0, GAIM_TYPED);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1333 else
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1334 serv_got_typing_stopped(gc, sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1335 return 1;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1336 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1337
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1338 static int gaim_odc_send_im(aim_session_t *sess, aim_conn_t *conn, const char *message, GaimConvImFlags imflags) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1339 char *buf;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1340 size_t len;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1341 int ret;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1342 GString *msg = g_string_new("<HTML><BODY>");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1343 GString *data = g_string_new("</BODY></HTML><BINARY>");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1344 GData *attribs;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1345 const char *start, *end, *last;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1346 int oscar_id = 0;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1347
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1348 last = message;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1349
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1350 /* for each valid IMG tag... */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1351 while (last && *last && gaim_markup_find_tag("img", last, &start, &end, &attribs)) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1352 GaimStoredImage *image = NULL;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1353 const char *id;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1354
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1355 if (start - last) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1356 g_string_append_len(msg, last, start - last);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1357 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1358
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1359 id = g_datalist_get_data(&attribs, "id");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1360
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1361 /* ... if it refers to a valid gaim image ... */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1362 if (id && (image = gaim_imgstore_get(atoi(id)))) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1363 /* ... append the message from start to the tag ... */
9126
b95adbd031d5 [gaim-migrate @ 9903]
Mark Doliner <markdoliner@pidgin.im>
parents: 9070
diff changeset
1364 unsigned long size = gaim_imgstore_get_size(image);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1365 const char *filename = gaim_imgstore_get_filename(image);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1366 gpointer imgdata = gaim_imgstore_get_data(image);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1367
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1368 oscar_id++;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1369
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1370 /* ... insert a new img tag with the oscar id ... */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1371 if (filename)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1372 g_string_append_printf(msg,
9126
b95adbd031d5 [gaim-migrate @ 9903]
Mark Doliner <markdoliner@pidgin.im>
parents: 9070
diff changeset
1373 "<IMG SRC=\"%s\" ID=\"%d\" DATASIZE=\"%lu\">",
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1374 filename, oscar_id, size);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1375 else
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1376 g_string_append_printf(msg,
9126
b95adbd031d5 [gaim-migrate @ 9903]
Mark Doliner <markdoliner@pidgin.im>
parents: 9070
diff changeset
1377 "<IMG ID=\"%d\" DATASIZE=\"%lu\">",
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1378 oscar_id, size);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1379
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1380 /* ... and append the data to the binary section ... */
9126
b95adbd031d5 [gaim-migrate @ 9903]
Mark Doliner <markdoliner@pidgin.im>
parents: 9070
diff changeset
1381 g_string_append_printf(data, "<DATA ID=\"%d\" SIZE=\"%lu\">",
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1382 oscar_id, size);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1383 data = g_string_append_len(data, imgdata, size);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1384 data = g_string_append(data, "</DATA>");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1385 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1386 /* If the tag is invalid, skip it, thus no else here */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1387
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1388 g_datalist_clear(&attribs);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1389
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1390 /* continue from the end of the tag */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1391 last = end + 1;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1392 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1393
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1394 /* append any remaining message data (without the > :-) */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1395 if (last && *last)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1396 msg = g_string_append(msg, last);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1397
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1398 /* if we inserted any images in the binary section, append it */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1399 if (oscar_id) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1400 msg = g_string_append_len(msg, data->str, data->len);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1401 msg = g_string_append(msg, "</BINARY>");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1402 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1403
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1404 len = msg->len;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1405 buf = msg->str;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1406 g_string_free(msg, FALSE);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1407 g_string_free(data, TRUE);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1408
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1409
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1410 /* XXX - The last parameter below is the encoding. Let Paco-Paco do something with it. */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1411 if (imflags & GAIM_CONV_IM_AUTO_RESP)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1412 ret = aim_odc_send_im(sess, conn, buf, len, 0, 1);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1413 else
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1414 ret = aim_odc_send_im(sess, conn, buf, len, 0, 0);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1415
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1416 g_free(buf);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1417
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1418 return ret;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1419 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1420
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1421 struct ask_do_dir_im {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1422 char *who;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1423 GaimConnection *gc;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1424 };
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1425
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1426 static void oscar_cancel_direct_im(struct ask_do_dir_im *data) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1427 g_free(data->who);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1428 g_free(data);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1429 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1430
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1431 /* this function is used to initiate a direct im session with someone.
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1432 * we start listening on a port and send a request. they either connect
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1433 * or send some kind of reply. If they can't connect, they ask us to
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1434 * connect to them, and so we do that.
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1435 *
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1436 * this function will also get called if the other side initiate's a direct
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1437 * im and we try to connect and fail. in that case cookie will not be null.
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1438 *
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1439 * note that cookie is an 8 byte string that isn't NULL terminated
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1440 */
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1441 static void oscar_direct_im_initiate(GaimConnection *gc, const char *who, const char *cookie) {
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1442 OscarData *od;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1443 struct oscar_direct_im *dim;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1444 int listenfd;
8982
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1445 const char *ip;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1446
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1447 od = (OscarData *)gc->proto_data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1448
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1449 dim = oscar_direct_im_find(od, who);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1450 if (dim) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1451 if (!(dim->connected)) { /* We'll free the old, unconnected dim, and start over */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1452 oscar_direct_im_disconnect(od, dim);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1453 gaim_debug_info("oscar",
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1454 "Gave up on old direct IM, trying again\n");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1455 } else {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1456 gaim_notify_error(gc, NULL, "DirectIM already open.", NULL);
8980
d068f4270837 [gaim-migrate @ 9755]
Tim Ringenbach <marv@pidgin.im>
parents: 8978
diff changeset
1457 return;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1458 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1459 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1460 dim = g_new0(struct oscar_direct_im, 1);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1461 dim->gc = gc;
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1462 g_snprintf(dim->name, sizeof dim->name, "%s", who);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1463
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1464 listenfd = gaim_network_listen_range(5190, 5199);
8982
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1465 ip = gaim_network_get_my_ip(od->conn ? od->conn->fd : -1);
9455
b16e0c0ac03c [gaim-migrate @ 10279]
Tim Ringenbach <marv@pidgin.im>
parents: 9407
diff changeset
1466 if (listenfd >= 0)
b16e0c0ac03c [gaim-migrate @ 10279]
Tim Ringenbach <marv@pidgin.im>
parents: 9407
diff changeset
1467 dim->conn = aim_odc_initiate(od->sess, who, listenfd, gaim_network_ip_atoi(ip), gaim_network_get_port_from_fd(listenfd), cookie);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1468 if (dim->conn != NULL) {
8982
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1469 char *tmp;
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1470 GaimConversation *conv;
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1471
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1472 od->direct_ims = g_slist_append(od->direct_ims, dim);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1473 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1474 oscar_callback, dim->conn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1475 aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIM_ESTABLISHED,
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1476 gaim_odc_initiate, 0);
8982
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1477
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1478 conv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, who);
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1479 tmp = g_strdup_printf(_("Asking %s to connect to us at %s:%hu for Direct IM."), who, ip,
8982
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1480 gaim_network_get_port_from_fd(listenfd));
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1481 gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, time(NULL));
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1482 g_free(tmp);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1483 } else {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1484 gaim_notify_error(gc, NULL, _("Unable to open Direct IM"), NULL);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1485 oscar_direct_im_destroy(od, dim);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1486 }
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1487 }
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1488
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1489 static void oscar_direct_im(struct ask_do_dir_im *data) {
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1490 GaimConnection *gc = data->gc;
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1491
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1492 if (!g_list_find(gaim_connections_get_all(), gc)) {
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1493 g_free(data->who);
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1494 g_free(data);
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1495 return;
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1496 }
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1497
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1498 oscar_direct_im_initiate(gc, data->who, NULL);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1499 g_free(data->who);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1500 g_free(data);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1501 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1502
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1503 /* this is the right click menu cb thingy */
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1504 static void oscar_ask_direct_im(GaimBlistNode *node, gpointer ignored) {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1505
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1506 GaimBuddy *buddy;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1507 GaimConnection *gc;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1508 gchar *buf;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1509 struct ask_do_dir_im *data;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1510
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1511 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node));
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1512
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1513 buddy = (GaimBuddy *) node;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1514 gc = gaim_account_get_connection(buddy->account);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1515
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1516 data = g_new0(struct ask_do_dir_im, 1);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1517 data->who = g_strdup(buddy->name);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1518 data->gc = gc;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1519 buf = g_strdup_printf(_("You have selected to open a Direct IM connection with %s."),
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1520 buddy->name);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1521
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1522 gaim_request_action(gc, NULL, buf,
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1523 _("Because this reveals your IP address, it "
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1524 "may be considered a privacy risk. Do you "
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1525 "wish to continue?"),
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1526 0, data, 2,
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1527 _("Connect"), G_CALLBACK(oscar_direct_im),
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1528 _("Cancel"), G_CALLBACK(oscar_cancel_direct_im));
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1529 g_free(buf);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1530 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1531
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1532 /*****************************************************************************
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1533 * End scary direct im stuff
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1534 *****************************************************************************/
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1535
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1536 static void oscar_callback(gpointer data, gint source, GaimInputCondition condition) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1537 aim_conn_t *conn = (aim_conn_t *)data;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1538 aim_session_t *sess = aim_conn_getsess(conn);
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1539 GaimConnection *gc = sess ? sess->aux_data : NULL;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1540 OscarData *od;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1541
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1542 if (!gc) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1543 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1544 "oscar callback for closed connection (1).\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1545 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1546 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1547
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1548 od = (OscarData *)gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1549
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1550 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1551 /* oh boy. this is probably bad. i guess the only thing we
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1552 * can really do is return? */
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1553 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1554 "oscar callback for closed connection (2).\n");
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1555 gaim_debug_misc("oscar", "gc = %p\n", gc);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1556 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1557 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1558
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1559 if (condition & GAIM_INPUT_READ) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1560 if (conn->type == AIM_CONN_TYPE_LISTENER) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1561 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1562 "got information on rendezvous listener\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1563 if (aim_handlerendconnect(od->sess, conn) < 0) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1564 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1565 "connection error (rendezvous listener)\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1566 aim_conn_kill(od->sess, &conn);
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1567 /* AAA - Don't we need to gaim_xfer_cancel here? --marv */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1568 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1569 } else {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1570 if (aim_get_command(od->sess, conn) >= 0) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1571 aim_rxdispatch(od->sess);
6029
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
1572 if (od->killme) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1573 gaim_debug_error("oscar", "Waiting to be destroyed\n");
6029
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
1574 return;
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
1575 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1576 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1577 if ((conn->type == AIM_CONN_TYPE_BOS) ||
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1578 !(aim_getconn_type(od->sess, AIM_CONN_TYPE_BOS))) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1579 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1580 "major connection error\n");
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1581 gaim_connection_error(gc, _("Disconnected."));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1582 } else if (conn->type == AIM_CONN_TYPE_CHAT) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1583 struct chat_connection *c = find_oscar_chat_by_conn(gc, conn);
9627
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
1584 GaimConversation *conv = gaim_find_chat(gc, c->id);
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
1585 char *buf;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1586 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1587 "disconnected from chat room %s\n", c->name);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1588 c->conn = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1589 if (c->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1590 gaim_input_remove(c->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1591 c->inpa = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1592 c->fd = -1;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1593 aim_conn_kill(od->sess, &conn);
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
1594 buf = g_strdup_printf(_("You have been disconnected from chat room %s."), c->name);
9627
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
1595 if (conv)
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
1596 gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_ERROR, time(NULL));
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
1597 else
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
1598 gaim_notify_error(gc, NULL, buf, NULL);
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
1599 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1600 } else if (conn->type == AIM_CONN_TYPE_CHATNAV) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1601 if (od->cnpa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1602 gaim_input_remove(od->cnpa);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1603 od->cnpa = 0;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1604 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1605 "removing chatnav input watcher\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1606 while (od->create_rooms) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1607 struct create_room *cr = od->create_rooms->data;
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
1608 g_free(cr->name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1609 od->create_rooms =
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1610 g_slist_remove(od->create_rooms, cr);
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
1611 g_free(cr);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1612 gaim_notify_error(gc, NULL,
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1613 _("Chat is currently unavailable"),
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1614 NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1615 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1616 aim_conn_kill(od->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1617 } else if (conn->type == AIM_CONN_TYPE_AUTH) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1618 if (od->paspa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1619 gaim_input_remove(od->paspa);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1620 od->paspa = 0;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1621 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1622 "removing authconn input watcher\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1623 aim_conn_kill(od->sess, &conn);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1624 } else if (conn->type == AIM_CONN_TYPE_EMAIL) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1625 if (od->emlpa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1626 gaim_input_remove(od->emlpa);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1627 od->emlpa = 0;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1628 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1629 "removing email input watcher\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1630 aim_conn_kill(od->sess, &conn);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1631 } else if (conn->type == AIM_CONN_TYPE_ICON) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1632 if (od->icopa > 0)
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1633 gaim_input_remove(od->icopa);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1634 od->icopa = 0;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1635 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1636 "removing icon input watcher\n");
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1637 aim_conn_kill(od->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1638 } else if (conn->type == AIM_CONN_TYPE_RENDEZVOUS) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1639 if (conn->subtype == AIM_CONN_SUBTYPE_OFT_DIRECTIM)
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1640 gaim_odc_disconnect(od->sess, conn);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1641 aim_conn_kill(od->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1642 } else {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1643 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1644 "holy crap! generic connection error! %hu\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1645 conn->type);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1646 aim_conn_kill(od->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1647 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1648 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1649 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1650 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1651 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1652
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1653 static void oscar_debug(aim_session_t *sess, int level, const char *format, va_list va) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1654 GaimConnection *gc = sess->aux_data;
7285
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
1655 gchar *s = g_strdup_vprintf(format, va);
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
1656 gchar *buf;
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
1657
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
1658 buf = g_strdup_printf("%s %d: %s", gaim_account_get_username(gaim_connection_get_account(gc)), level, s);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1659 gaim_debug_info("oscar", buf);
7285
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
1660 if (buf[strlen(buf)-1] != '\n')
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1661 gaim_debug_info(NULL, "\n");
7285
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
1662 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1663 g_free(s);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1664 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1665
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1666 static void oscar_login_connect(gpointer data, gint source, GaimInputCondition cond)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1667 {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1668 GaimConnection *gc = data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1669 OscarData *od;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1670 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1671 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1672
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1673 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1674 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1675 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1676 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1677
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1678 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1679 sess = od->sess;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1680 conn = aim_getconn_type_all(sess, AIM_CONN_TYPE_AUTH);
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
1681 conn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1682
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1683 if (source < 0) {
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1684 gaim_connection_error(gc, _("Couldn't connect to host"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1685 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1686 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1687
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1688 aim_conn_completeconnect(sess, conn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1689 gc->inpa = gaim_input_add(conn->fd, GAIM_INPUT_READ, oscar_callback, conn);
7282
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
1690 aim_request_login(sess, conn, gaim_account_get_username(gaim_connection_get_account(gc)));
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
1691
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1692 gaim_debug_info("oscar",
7282
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
1693 "Screen name sent, waiting for response\n");
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1694 gaim_connection_update_progress(gc, _("Screen name sent"), 1, OSCAR_CONNECT_STEPS);
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
1695 ck[1] = 0x65;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1696 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1697
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1698 static void oscar_login(GaimAccount *account) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1699 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1700 aim_conn_t *conn;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1701 GaimConnection *gc = gaim_account_get_connection(account);
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1702 OscarData *od = gc->proto_data = g_new0(OscarData, 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1703
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1704 gaim_debug_misc("oscar", "oscar_login: gc = %p\n", gc);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
1705
8437
9a95bfeb008d [gaim-migrate @ 9167]
Evan Schoenberg <evands@pidgin.im>
parents: 8430
diff changeset
1706 if (!aim_snvalid(gaim_account_get_username(account))) {
9a95bfeb008d [gaim-migrate @ 9167]
Evan Schoenberg <evands@pidgin.im>
parents: 8430
diff changeset
1707 gchar *buf;
8590
6f7b9c538d68 [gaim-migrate @ 9341]
Mark Doliner <markdoliner@pidgin.im>
parents: 8589
diff changeset
1708 buf = g_strdup_printf(_("Unable to login: Could not sign on as %s because the screen name is invalid. Screen names must either start with a letter and contain only letters, numbers and spaces, or contain only numbers."), gaim_account_get_username(account));
8437
9a95bfeb008d [gaim-migrate @ 9167]
Evan Schoenberg <evands@pidgin.im>
parents: 8430
diff changeset
1709 gaim_connection_error(gc, buf);
9a95bfeb008d [gaim-migrate @ 9167]
Evan Schoenberg <evands@pidgin.im>
parents: 8430
diff changeset
1710 g_free(buf);
9a95bfeb008d [gaim-migrate @ 9167]
Evan Schoenberg <evands@pidgin.im>
parents: 8430
diff changeset
1711 }
9a95bfeb008d [gaim-migrate @ 9167]
Evan Schoenberg <evands@pidgin.im>
parents: 8430
diff changeset
1712
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
1713 if (aim_sn_is_icq((gaim_account_get_username(account)))) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1714 od->icq = TRUE;
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
1715 } else {
6622
277eb0b14653 [gaim-migrate @ 7146]
Robert McQueen <robot101@debian.org>
parents: 6621
diff changeset
1716 gc->flags |= GAIM_CONNECTION_HTML;
277eb0b14653 [gaim-migrate @ 7146]
Robert McQueen <robot101@debian.org>
parents: 6621
diff changeset
1717 gc->flags |= GAIM_CONNECTION_AUTO_RESP;
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
1718 }
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
1719 od->buddyinfo = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, oscar_free_buddyinfo);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1720
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1721 sess = g_new0(aim_session_t, 1);
7285
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
1722 aim_session_init(sess, TRUE, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1723 aim_setdebuggingcb(sess, oscar_debug);
7282
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
1724 /*
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
1725 * We need an immediate queue because we don't use a while-loop
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
1726 * to see if things need to be sent.
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
1727 */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1728 aim_tx_setenqueue(sess, AIM_TX_IMMEDIATE, NULL);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1729 od->sess = sess;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1730 sess->aux_data = gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1731
9935
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
1732 /* Connect to core Gaim signals */
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10042
diff changeset
1733 gaim_prefs_connect_callback(gc, "/plugins/prpl/oscar/recent_buddies", recent_buddies_cb, gc);
9935
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
1734
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1735 conn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1736 if (conn == NULL) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1737 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1738 "internal connection error\n");
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1739 gaim_connection_error(gc, _("Unable to login to AIM"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1740 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1741 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1742
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
1743 aim_conn_addhandler(sess, conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1744 aim_conn_addhandler(sess, conn, 0x0017, 0x0007, gaim_parse_login, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1745 aim_conn_addhandler(sess, conn, 0x0017, 0x0003, gaim_parse_auth_resp, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1746
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1747 conn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
1748 if (gaim_proxy_connect(account, gaim_account_get_string(account, "server", FAIM_LOGIN_SERVER),
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1749 gaim_account_get_int(account, "port", FAIM_LOGIN_PORT),
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1750 oscar_login_connect, gc) < 0) {
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1751 gaim_connection_error(gc, _("Couldn't connect to host"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1752 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1753 }
7282
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
1754
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1755 gaim_connection_update_progress(gc, _("Connecting"), 0, OSCAR_CONNECT_STEPS);
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
1756 ck[0] = 0x5a;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1757 }
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1758
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1759 static void oscar_close(GaimConnection *gc) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1760 OscarData *od = (OscarData *)gc->proto_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1761
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1762 while (od->oscar_chats) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1763 struct chat_connection *n = od->oscar_chats->data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1764 if (n->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1765 gaim_input_remove(n->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1766 g_free(n->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1767 g_free(n->show);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1768 od->oscar_chats = g_slist_remove(od->oscar_chats, n);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1769 g_free(n);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1770 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1771 while (od->direct_ims) {
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1772 struct oscar_direct_im *n = od->direct_ims->data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1773 oscar_direct_im_destroy(od, n);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1774 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1775 /* BBB */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1776 while (od->file_transfers) {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1777 GaimXfer *xfer;
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1778 xfer = (GaimXfer *)od->file_transfers->data;
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7793
diff changeset
1779 gaim_xfer_cancel_local(xfer);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1780 }
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1781 while (od->requesticon) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1782 char *sn = od->requesticon->data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1783 od->requesticon = g_slist_remove(od->requesticon, sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1784 free(sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1785 }
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
1786 g_hash_table_destroy(od->buddyinfo);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1787 while (od->create_rooms) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1788 struct create_room *cr = od->create_rooms->data;
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
1789 g_free(cr->name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1790 od->create_rooms = g_slist_remove(od->create_rooms, cr);
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
1791 g_free(cr);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
1792 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1793 if (od->email)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1794 g_free(od->email);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1795 if (od->newp)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1796 g_free(od->newp);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1797 if (od->oldp)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1798 g_free(od->oldp);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1799 if (gc->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1800 gaim_input_remove(gc->inpa);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1801 if (od->cnpa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1802 gaim_input_remove(od->cnpa);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1803 if (od->paspa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1804 gaim_input_remove(od->paspa);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1805 if (od->emlpa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1806 gaim_input_remove(od->emlpa);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1807 if (od->icopa > 0)
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1808 gaim_input_remove(od->icopa);
6907
895dc33ce157 [gaim-migrate @ 7454]
Mark Doliner <markdoliner@pidgin.im>
parents: 6905
diff changeset
1809 if (od->icontimer > 0)
8287
266eacc707ac [gaim-migrate @ 9011]
Scott Lamb
parents: 8273
diff changeset
1810 gaim_timeout_remove(od->icontimer);
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
1811 if (od->getblisttimer > 0)
8287
266eacc707ac [gaim-migrate @ 9011]
Scott Lamb
parents: 8273
diff changeset
1812 gaim_timeout_remove(od->getblisttimer);
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
1813 if (od->getinfotimer > 0)
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
1814 gaim_timeout_remove(od->getinfotimer);
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10042
diff changeset
1815 gaim_prefs_disconnect_by_handle(gc);
9971
8291bafb0025 [gaim-migrate @ 10882]
Daniel Atallah <datallah@pidgin.im>
parents: 9948
diff changeset
1816
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1817 aim_session_kill(od->sess);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1818 g_free(od->sess);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1819 od->sess = NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1820 g_free(gc->proto_data);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1821 gc->proto_data = NULL;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1822 gaim_debug_info("oscar", "Signed off.\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1823 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1824
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1825 static void oscar_bos_connect(gpointer data, gint source, GaimInputCondition cond) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1826 GaimConnection *gc = data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1827 OscarData *od;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1828 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1829 aim_conn_t *bosconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1830
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1831 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1832 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1833 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1834 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1835
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1836 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1837 sess = od->sess;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1838 bosconn = od->conn;
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
1839 bosconn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1840
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1841 if (source < 0) {
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1842 gaim_connection_error(gc, _("Could Not Connect"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1843 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1844 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1845
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1846 aim_conn_completeconnect(sess, bosconn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1847 gc->inpa = gaim_input_add(bosconn->fd, GAIM_INPUT_READ, oscar_callback, bosconn);
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1848
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1849 gaim_connection_update_progress(gc,
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1850 _("Connection established, cookie sent"), 4, OSCAR_CONNECT_STEPS);
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
1851 ck[4] = 0x61;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1852 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1853
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1854 /* BBB */
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1855 /*
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1856 * This little area in oscar.c is the nexus of file transfer code,
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1857 * so I wrote a little explanation of what happens. I am such a
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1858 * ninja.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1859 *
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1860 * The series of events for a file send is:
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1861 * -Create xfer and call gaim_xfer_request (this happens in oscar_ask_sendfile)
8735
01248ea222d3 [gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents: 8733
diff changeset
1862 * -User chooses a file and oscar_xfer_init is called. It establishes a
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1863 * listening socket, then asks the remote user to connect to us (and
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1864 * gives them the file name, port, IP, etc.)
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1865 * -They connect to us and we send them an AIM_CB_OFT_PROMPT (this happens
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1866 * in oscar_sendfile_estblsh)
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1867 * -They send us an AIM_CB_OFT_ACK and then we start sending data
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1868 * -When we finish, they send us an AIM_CB_OFT_DONE and they close the
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1869 * connection.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1870 * -We get drunk because file transfer kicks ass.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1871 *
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1872 * The series of events for a file receive is:
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1873 * -Create xfer and call gaim_xfer request (this happens in incomingim_chan2)
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1874 * -Gaim user selects file to name and location to save file to and
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1875 * oscar_xfer_init is called
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1876 * -It connects to the remote user using the IP they gave us earlier
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1877 * -After connecting, they send us an AIM_CB_OFT_PROMPT. In reply, we send
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1878 * them an AIM_CB_OFT_ACK.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1879 * -They begin to send us lots of raw data.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1880 * -When they finish sending data we send an AIM_CB_OFT_DONE and then close
8735
01248ea222d3 [gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents: 8733
diff changeset
1881 * the connection.
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1882 */
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1883 static void oscar_sendfile_connected(gpointer data, gint source, GaimInputCondition condition);
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1884
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1885 /*
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1886 * Miscellaneous xfer functions
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1887 */
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1888 static GaimXfer *oscar_find_xfer_by_cookie(GSList *fts, const fu8_t *ck)
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1889 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1890 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1891 struct aim_oft_info *oft_info;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1892
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1893 while (fts) {
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1894 xfer = fts->data;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1895 oft_info = xfer->data;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1896
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1897 if (oft_info && !memcmp(ck, oft_info->cookie, 8))
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1898 return xfer;
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1899
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1900 fts = g_slist_next(fts);
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1901 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1902
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1903 return NULL;
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1904 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1905
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1906 static GaimXfer *oscar_find_xfer_by_conn(GSList *fts, aim_conn_t *conn)
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1907 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1908 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1909 struct aim_oft_info *oft_info;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1910
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1911 while (fts) {
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1912 xfer = fts->data;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1913 oft_info = xfer->data;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1914
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1915 if (oft_info && (conn == oft_info->conn))
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1916 return xfer;
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1917
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1918 fts = g_slist_next(fts);
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1919 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1920
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1921 return NULL;
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1922 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1923
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1924 static void oscar_xfer_end(GaimXfer *xfer)
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1925 {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1926 struct aim_oft_info *oft_info = xfer->data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1927 GaimConnection *gc = oft_info->sess->aux_data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1928 OscarData *od = gc->proto_data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1929
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1930 gaim_debug_info("oscar", "AAA - in oscar_xfer_end\n");
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1931
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1932 if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1933 oft_info->fh.nrecvd = gaim_xfer_get_bytes_sent(xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1934 aim_oft_sendheader(oft_info->sess, AIM_CB_OFT_DONE, oft_info);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1935 }
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1936
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1937 aim_conn_kill(oft_info->sess, &oft_info->conn);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1938 aim_oft_destroyinfo(oft_info);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1939 xfer->data = NULL;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1940 od->file_transfers = g_slist_remove(od->file_transfers, xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1941 }
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1942
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1943 /*
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1944 * xfer functions used when receiving files
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1945 */
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1946
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1947 static void oscar_xfer_init_recv(GaimXfer *xfer)
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1948 {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1949 struct aim_oft_info *oft_info = xfer->data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1950 GaimConnection *gc = oft_info->sess->aux_data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1951 OscarData *od = gc->proto_data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1952
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1953 gaim_debug_info("oscar", "AAA - in oscar_xfer_recv_init\n");
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1954
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1955 oft_info->conn = aim_newconn(od->sess, AIM_CONN_TYPE_RENDEZVOUS, NULL);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1956 if (oft_info->conn) {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1957 oft_info->conn->subtype = AIM_CONN_SUBTYPE_OFT_SENDFILE;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1958 aim_conn_addhandler(od->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_PROMPT, oscar_sendfile_prompt, 0);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1959 oft_info->conn->fd = xfer->fd = gaim_proxy_connect(gaim_connection_get_account(gc),
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1960 xfer->remote_ip, xfer->remote_port, oscar_sendfile_connected, xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1961 if (xfer->fd == -1) {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1962 gaim_xfer_error(GAIM_XFER_RECEIVE, xfer->who,
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1963 _("Unable to establish file descriptor."));
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1964 gaim_xfer_cancel_local(xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1965 }
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1966 } else {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1967 gaim_xfer_error(GAIM_XFER_RECEIVE, xfer->who,
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1968 _("Unable to create new connection."));
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1969 gaim_xfer_cancel_local(xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1970 /* Try a different port? Ask them to connect to us? /join #gaim and whine? */
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1971 }
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1972
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1973 }
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1974
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1975 static void oscar_xfer_cancel_recv(GaimXfer *xfer)
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1976 {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1977 struct aim_oft_info *oft_info = xfer->data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1978 GaimConnection *gc = oft_info->sess->aux_data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1979 OscarData *od = gc->proto_data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1980
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1981 gaim_debug_info("oscar", "AAA - in oscar_xfer_cancel_recv\n");
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1982
9771
42bd06e5b1b3 [gaim-migrate @ 10639]
Dave West <kat@users.sourceforge.net>
parents: 9770
diff changeset
1983 if (gaim_xfer_get_status(xfer) != GAIM_XFER_STATUS_CANCEL_REMOTE)
42bd06e5b1b3 [gaim-migrate @ 10639]
Dave West <kat@users.sourceforge.net>
parents: 9770
diff changeset
1984 aim_im_sendch2_sendfile_cancel(oft_info->sess, oft_info);
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1985
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1986 aim_conn_kill(oft_info->sess, &oft_info->conn);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1987 aim_oft_destroyinfo(oft_info);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1988 xfer->data = NULL;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1989 od->file_transfers = g_slist_remove(od->file_transfers, xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1990 }
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1991
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1992 static void oscar_xfer_ack_recv(GaimXfer *xfer, const char *buffer, size_t size)
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1993 {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1994 struct aim_oft_info *oft_info = xfer->data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1995
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1996 /* Update our rolling checksum. Like Walmart, yo. */
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1997 oft_info->fh.recvcsum = aim_oft_checksum_chunk(buffer, size, oft_info->fh.recvcsum);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1998 }
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1999
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2000 /*
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2001 * xfer functions used when sending files
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2002 */
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2003
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2004 static void oscar_xfer_init_send(GaimXfer *xfer)
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2005 {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2006 struct aim_oft_info *oft_info = xfer->data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2007 GaimConnection *gc = oft_info->sess->aux_data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2008 OscarData *od = gc->proto_data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2009 int listenfd;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2010
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2011 gaim_debug_info("oscar", "AAA - in oscar_xfer_send_init\n");
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2012
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2013 xfer->filename = g_path_get_basename(xfer->local_filename);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2014 strncpy(oft_info->fh.name, xfer->filename, 64);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2015 oft_info->fh.name[63] = '\0';
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2016 oft_info->fh.totsize = gaim_xfer_get_size(xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2017 oft_info->fh.size = gaim_xfer_get_size(xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2018 oft_info->fh.checksum = aim_oft_checksum_file(xfer->local_filename);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2019
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2020 /* Create a listening socket and an associated libfaim conn */
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2021 if ((listenfd = gaim_network_listen_range(5190, 5199)) < 0) {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2022 gaim_xfer_cancel_local(xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2023 return;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2024 }
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2025 xfer->local_port = gaim_network_get_port_from_fd(listenfd);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2026 oft_info->port = xfer->local_port;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2027 if (aim_sendfile_listen(od->sess, oft_info, listenfd) != 0) {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2028 gaim_xfer_cancel_local(xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2029 return;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2030 }
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2031 gaim_debug_misc("oscar",
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2032 "port is %hu, ip is %s\n",
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2033 xfer->local_port, oft_info->clientip);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2034 if (oft_info->conn) {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2035 xfer->watcher = gaim_input_add(oft_info->conn->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2036 aim_im_sendch2_sendfile_ask(od->sess, oft_info);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2037 aim_conn_addhandler(od->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_ESTABLISHED, oscar_sendfile_estblsh, 0);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2038 } else {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2039 gaim_xfer_error(GAIM_XFER_SEND, xfer->who,
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2040 _("Unable to establish listener socket."));
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2041 gaim_xfer_cancel_local(xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2042 }
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2043 }
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2044
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2045 static void oscar_xfer_cancel_send(GaimXfer *xfer)
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2046 {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2047 struct aim_oft_info *oft_info = xfer->data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2048 GaimConnection *gc = oft_info->sess->aux_data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2049 OscarData *od = gc->proto_data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2050
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2051 gaim_debug_info("oscar", "AAA - in oscar_xfer_cancel_send\n");
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2052
9771
42bd06e5b1b3 [gaim-migrate @ 10639]
Dave West <kat@users.sourceforge.net>
parents: 9770
diff changeset
2053 if (gaim_xfer_get_status(xfer) != GAIM_XFER_STATUS_CANCEL_REMOTE)
42bd06e5b1b3 [gaim-migrate @ 10639]
Dave West <kat@users.sourceforge.net>
parents: 9770
diff changeset
2054 aim_im_sendch2_sendfile_cancel(oft_info->sess, oft_info);
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2055
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2056 aim_conn_kill(oft_info->sess, &oft_info->conn);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2057 aim_oft_destroyinfo(oft_info);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2058 xfer->data = NULL;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2059 od->file_transfers = g_slist_remove(od->file_transfers, xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2060 }
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2061
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2062 static void oscar_xfer_ack_send(GaimXfer *xfer, const char *buffer, size_t size)
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2063 {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2064 struct aim_oft_info *oft_info = xfer->data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2065
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2066 /* I'm not sure I like how we do this. --marv
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2067 * I do. AIM file transfers aren't really meant to be thought
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2068 * of as a transferring just a single file. The rendezvous
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2069 * establishes a connection between two computers, and then
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2070 * those computers can use the same connection for transferring
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2071 * multiple files. So we don't want the Gaim core up and closing
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2072 * the socket all willy-nilly. We want to do that in the oscar
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2073 * prpl, whenever one side or the other says they're finished
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2074 * using the connection. There might be a better way to intercept
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2075 * the socket from the core, however... --KingAnt
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2076 */
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2077
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2078 /*
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2079 * If we're done sending, intercept the socket from the core ft code
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2080 * and wait for the other guy to send the "done" OFT packet.
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2081 */
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2082 if (gaim_xfer_get_bytes_remaining(xfer) <= 0) {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2083 gaim_input_remove(xfer->watcher);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2084 xfer->watcher = gaim_input_add(xfer->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2085 xfer->fd = 0;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2086 gaim_xfer_set_completed(xfer, TRUE);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2087 }
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2088 }
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2089
9466
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2090 static gboolean oscar_can_receive_file(GaimConnection *gc, const char *who) {
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2091 gboolean can_receive = FALSE;
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2092 OscarData *od = gc->proto_data;
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2093
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2094 if (!od->icq) {
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2095 aim_userinfo_t *userinfo;
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2096 userinfo = aim_locate_finduserinfo(od->sess, who);
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2097 if (userinfo && userinfo->capabilities & AIM_CAPS_SENDFILE)
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2098 can_receive = TRUE;
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2099 }
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2100
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2101 return can_receive;
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2102 }
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2103
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2104 static void oscar_send_file(GaimConnection *gc, const char *who, const char *file) {
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
2105
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
2106 OscarData *od;
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
2107 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2108 struct aim_oft_info *oft_info;
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents: 8227
diff changeset
2109 const char *ip;
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2110
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
2111 od = (OscarData *)gc->proto_data;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
2112
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2113 /* You want to send a file to someone else, you're so generous */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2114
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2115 /* Build the file transfer handle */
9466
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2116 xfer = gaim_xfer_new(gc->account, GAIM_XFER_SEND, who);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2117
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2118 /* Create the oscar-specific data */
8838
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8800
diff changeset
2119 ip = gaim_network_get_my_ip(od->conn ? od->conn->fd : -1);
9466
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2120 oft_info = aim_oft_createinfo(od->sess, NULL, who, ip, 0, 0, 0, NULL);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2121 xfer->data = oft_info;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2122
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2123 /* Setup our I/O op functions */
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2124 gaim_xfer_set_init_fnc(xfer, oscar_xfer_init_send);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2125 gaim_xfer_set_end_fnc(xfer, oscar_xfer_end);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
2126 gaim_xfer_set_cancel_send_fnc(xfer, oscar_xfer_cancel_send);
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2127 gaim_xfer_set_request_denied_fnc(xfer, oscar_xfer_cancel_send);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2128 gaim_xfer_set_ack_fnc(xfer, oscar_xfer_ack_send);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2129
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2130 /* Keep track of this transfer for later */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2131 od->file_transfers = g_slist_append(od->file_transfers, xfer);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2132
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2133 /* Now perform the request */
9466
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2134 if (file)
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2135 gaim_xfer_request_accepted(xfer, file);
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2136 else
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2137 gaim_xfer_request(xfer);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2138 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2139
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2140 static int gaim_parse_auth_resp(aim_session_t *sess, aim_frame_t *fr, ...) {
6029
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
2141 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2142 OscarData *od = gc->proto_data;
6029
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
2143 GaimAccount *account = gc->account;
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
2144 aim_conn_t *bosconn;
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
2145 char *host; int port;
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
2146 int i, rc;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2147 va_list ap;
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2148 struct aim_authresp_info *info;
6029
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
2149
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2150 port = gaim_account_get_int(account, "port", FAIM_LOGIN_PORT);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2151
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2152 va_start(ap, fr);
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2153 info = va_arg(ap, struct aim_authresp_info *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2154 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2155
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2156 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2157 "inside auth_resp (Screen name: %s)\n", info->sn);
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2158
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
2159 if (info->errorcode || !info->bosip || !info->cookielen || !info->cookie) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
2160 char buf[256];
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2161 switch (info->errorcode) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2162 case 0x05:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2163 /* Incorrect nick/password */
6498
23d2fd361db6 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
2164 gc->wants_to_die = TRUE;
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2165 gaim_connection_error(gc, _("Incorrect nickname or password."));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2166 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2167 case 0x11:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2168 /* Suspended account */
6498
23d2fd361db6 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
2169 gc->wants_to_die = TRUE;
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2170 gaim_connection_error(gc, _("Your account is currently suspended."));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2171 break;
3498
3f6ce04ea3ad [gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents: 3490
diff changeset
2172 case 0x14:
3f6ce04ea3ad [gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents: 3490
diff changeset
2173 /* service temporarily unavailable */
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2174 gaim_connection_error(gc, _("The AOL Instant Messenger service is temporarily unavailable."));
3498
3f6ce04ea3ad [gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents: 3490
diff changeset
2175 break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2176 case 0x18:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2177 /* connecting too frequently */
6498
23d2fd361db6 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
2178 gc->wants_to_die = TRUE;
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2179 gaim_connection_error(gc, _("You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer."));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2180 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2181 case 0x1c:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2182 /* client too old */
6498
23d2fd361db6 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
2183 gc->wants_to_die = TRUE;
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
2184 g_snprintf(buf, sizeof(buf), _("The client version you are using is too old. Please upgrade at %s"), GAIM_WEBSITE);
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2185 gaim_connection_error(gc, buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2186 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2187 default:
6623
75ba9eb9d3f8 [gaim-migrate @ 7147]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6622
diff changeset
2188 gaim_connection_error(gc, _("Authentication failed"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2189 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2190 }
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2191 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2192 "Login Error Code 0x%04hx\n", info->errorcode);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2193 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2194 "Error URL: %s\n", info->errorurl);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2195 od->killme = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2196 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2197 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2198
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2199
9992
d733f96bfc7b [gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents: 9991
diff changeset
2200 gaim_debug_misc("oscar", "Reg status: %hu\n", info->regstatus);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2201
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2202 if (info->email) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2203 gaim_debug_misc("oscar", "Email: %s\n", info->email);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2204 } else {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2205 gaim_debug_misc("oscar", "Email is NULL\n");
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2206 }
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2207
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2208 gaim_debug_misc("oscar", "BOSIP: %s\n", info->bosip);
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2209 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2210 "Closing auth connection...\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2211 aim_conn_kill(sess, &fr->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2212
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2213 bosconn = aim_newconn(sess, AIM_CONN_TYPE_BOS, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2214 if (bosconn == NULL) {
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2215 gaim_connection_error(gc, _("Internal Error"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2216 od->killme = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2217 return 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2218 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2219
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
2220 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2221 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
2222 aim_conn_addhandler(sess, bosconn, 0x0009, 0x0003, gaim_bosrights, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2223 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
2224 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
2225 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
2226 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
2227 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
2228 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
2229 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
2230 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
2231 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
2232 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
2233 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
2234 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
2235 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
2236 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
2237 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
2238 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_MTN, gaim_parse_mtn, 0);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
2239 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_USERINFO, gaim_parse_userinfo, 0);
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
2240 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_REQUESTINFOTIMEOUT, gaim_reqinfo_timeout, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2241 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
2242 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
2243 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
2244 aim_conn_addhandler(sess, bosconn, 0x0001, 0x0001, gaim_parse_genericerr, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2245 aim_conn_addhandler(sess, bosconn, 0x0003, 0x0001, gaim_parse_genericerr, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2246 aim_conn_addhandler(sess, bosconn, 0x0009, 0x0001, gaim_parse_genericerr, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2247 aim_conn_addhandler(sess, bosconn, 0x0001, 0x001f, gaim_memrequest, 0);
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
2248 aim_conn_addhandler(sess, bosconn, 0x0001, 0x000f, gaim_selfinfo, 0);
5844
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
2249 aim_conn_addhandler(sess, bosconn, 0x0001, 0x0021, oscar_icon_req,0);
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
2250 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
2251 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
2252 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_POP, 0x0002, gaim_popup, 0);
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
2253 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_ALIAS, gaim_icqalias, 0);
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
2254 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ICQ, AIM_CB_ICQ_INFO, gaim_icqinfo, 0);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2255 #ifndef NOSSI
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
2256 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_ERROR, gaim_ssi_parseerr, 0);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
2257 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
2258 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
2259 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_NOLIST, gaim_ssi_parselist, 0);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2260 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_SRVACK, gaim_ssi_parseack, 0);
8227
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
2261 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_ADD, gaim_ssi_parseadd, 0);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2262 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_RECVAUTH, gaim_ssi_authgiven, 0);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2263 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_RECVAUTHREQ, gaim_ssi_authrequest, 0);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2264 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_RECVAUTHREP, gaim_ssi_authreply, 0);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2265 aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_ADDED, gaim_ssi_gotadded, 0);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
2266 #endif
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
2267
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2268 od->conn = bosconn;
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2269 for (i = 0; i < (int)strlen(info->bosip); i++) {
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2270 if (info->bosip[i] == ':') {
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2271 port = atoi(&(info->bosip[i+1]));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2272 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2273 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2274 }
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2275 host = g_strndup(info->bosip, i);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2276 bosconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2277 rc = gaim_proxy_connect(gc->account, host, port, oscar_bos_connect, gc);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2278 g_free(host);
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
2279 if (rc < 0) {
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2280 gaim_connection_error(gc, _("Could Not Connect"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2281 od->killme = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2282 return 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2283 }
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
2284 aim_sendcookie(sess, bosconn, info->cookielen, info->cookie);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
2285 gaim_input_remove(gc->inpa);
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2286
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2287 gaim_connection_update_progress(gc, _("Received authorization"), 3, OSCAR_CONNECT_STEPS);
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
2288 ck[3] = 0x64;
7282
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
2289
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2290 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2291 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2292
7285
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
2293 /* XXX - Should use gaim_url_fetch for the below stuff */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2294 struct pieceofcrap {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2295 GaimConnection *gc;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2296 unsigned long offset;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2297 unsigned long len;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2298 char *modname;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2299 int fd;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2300 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2301 unsigned int inpa;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2302 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2303
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
2304 static void damn_you(gpointer data, gint source, GaimInputCondition c)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2305 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2306 struct pieceofcrap *pos = data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2307 OscarData *od = pos->gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2308 char in = '\0';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2309 int x = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2310 unsigned char m[17];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2311
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2312 while (read(pos->fd, &in, 1) == 1) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2313 if (in == '\n')
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2314 x++;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2315 else if (in != '\r')
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2316 x = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2317 if (x == 2)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2318 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2319 in = '\0';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2320 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2321 if (in != '\n') {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
2322 char buf[256];
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
2323 g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. You may want to use TOC until "
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
2324 "this is fixed. Check %s for updates."), GAIM_WEBSITE);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2325 gaim_notify_warning(pos->gc, NULL,
7422
da86b60869cb [gaim-migrate @ 8024]
Luke Schierer <lschiere@pidgin.im>
parents: 7406
diff changeset
2326 _("Gaim was unable to get a valid AIM login hash."),
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2327 buf);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
2328 gaim_input_remove(pos->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2329 close(pos->fd);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2330 g_free(pos);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2331 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2332 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2333 read(pos->fd, m, 16);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2334 m[16] = '\0';
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2335 gaim_debug_misc("oscar", "Sending hash: ");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2336 for (x = 0; x < 16; x++)
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2337 gaim_debug_misc(NULL, "%02hhx ", (unsigned char)m[x]);
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2338
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2339 gaim_debug_misc(NULL, "\n");
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
2340 gaim_input_remove(pos->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2341 close(pos->fd);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2342 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
2343 g_free(pos);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2344 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2345
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
2346 static void straight_to_hell(gpointer data, gint source, GaimInputCondition cond) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2347 struct pieceofcrap *pos = data;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2348 gchar *buf;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2349
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
2350 pos->fd = source;
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
2351
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2352 if (source < 0) {
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2353 buf = g_strdup_printf(_("You may be disconnected shortly. You may want to use TOC until "
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
2354 "this is fixed. Check %s for updates."), GAIM_WEBSITE);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2355 gaim_notify_warning(pos->gc, NULL,
7422
da86b60869cb [gaim-migrate @ 8024]
Luke Schierer <lschiere@pidgin.im>
parents: 7406
diff changeset
2356 _("Gaim was unable to get a valid AIM login hash."),
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2357 buf);
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2358 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2359 if (pos->modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2360 g_free(pos->modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2361 g_free(pos);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2362 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2363 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2364
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2365 buf = g_strdup_printf("GET " AIMHASHDATA "?offset=%ld&len=%ld&modname=%s HTTP/1.0\n\n",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2366 pos->offset, pos->len, pos->modname ? pos->modname : "");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2367 write(pos->fd, buf, strlen(buf));
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2368 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2369 if (pos->modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2370 g_free(pos->modname);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
2371 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
2372 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2373 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2374
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2375 /* size of icbmui.ocm, the largest module in AIM 3.5 */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2376 #define AIM_MAX_FILE_SIZE 98304
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2377
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2378 int gaim_memrequest(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2379 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2380 struct pieceofcrap *pos;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2381 fu32_t offset, len;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2382 char *modname;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2383
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2384 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2385 offset = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2386 len = va_arg(ap, fu32_t);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2387 modname = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2388 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2389
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2390 gaim_debug_misc("oscar",
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
2391 "offset: %u, len: %u, file: %s\n",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2392 offset, len, (modname ? modname : "aim.exe"));
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2393
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2394 if (len == 0) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2395 gaim_debug_misc("oscar", "len is 0, hashing NULL\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2396 aim_sendmemblock(sess, fr->conn, offset, len, NULL,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2397 AIM_SENDMEMBLOCK_FLAG_ISREQUEST);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2398 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2399 }
9625
f2cda8836eb9 [gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents: 9620
diff changeset
2400 /* uncomment this when you're convinced it's right. remember, it's been wrong before. */
f2cda8836eb9 [gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents: 9620
diff changeset
2401 #if 0
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2402 if (offset > AIM_MAX_FILE_SIZE || len > AIM_MAX_FILE_SIZE) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2403 char *buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2404 int i = 8;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2405 if (modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2406 i += strlen(modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2407 buf = g_malloc(i);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2408 i = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2409 if (modname) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2410 memcpy(buf, modname, strlen(modname));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2411 i += strlen(modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2412 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2413 buf[i++] = offset & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2414 buf[i++] = (offset >> 8) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2415 buf[i++] = (offset >> 16) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2416 buf[i++] = (offset >> 24) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2417 buf[i++] = len & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2418 buf[i++] = (len >> 8) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2419 buf[i++] = (len >> 16) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2420 buf[i++] = (len >> 24) & 0xff;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2421 gaim_debug_misc("oscar", "len + offset is invalid, "
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2422 "hashing request\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2423 aim_sendmemblock(sess, command->conn, offset, i, buf, AIM_SENDMEMBLOCK_FLAG_ISREQUEST);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2424 g_free(buf);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2425 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2426 }
9625
f2cda8836eb9 [gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents: 9620
diff changeset
2427 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2428
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2429 pos = g_new0(struct pieceofcrap, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2430 pos->gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2431 pos->conn = fr->conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2432
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2433 pos->offset = offset;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2434 pos->len = len;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2435 pos->modname = modname ? g_strdup(modname) : NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2436
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2437 if (gaim_proxy_connect(pos->gc->account, "gaim.sourceforge.net", 80, straight_to_hell, pos) != 0) {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
2438 char buf[256];
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2439 if (pos->modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2440 g_free(pos->modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2441 g_free(pos);
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
2442 g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. You may want to use TOC until "
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
2443 "this is fixed. Check %s for updates."), GAIM_WEBSITE);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2444 gaim_notify_warning(pos->gc, NULL,
7422
da86b60869cb [gaim-migrate @ 8024]
Luke Schierer <lschiere@pidgin.im>
parents: 7406
diff changeset
2445 _("Gaim was unable to get a valid login hash."),
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2446 buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2447 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2448
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2449 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2450 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2451
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2452 static int gaim_parse_login(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2453 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2454 OscarData *od = gc->proto_data;
5591
2327f0802baa [gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
2455 GaimAccount *account = gaim_connection_get_account(gc);
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2456 GaimAccount *ac = gaim_connection_get_account(gc);
7282
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
2457 #if 0
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
2458 struct client_info_s info = {"gaim", 7, 3, 2003, "us", "en", 0x0004, 0x0000, 0x04b};
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
2459 #endif
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
2460 va_list ap;
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
2461 char *key;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2462
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2463 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2464 key = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2465 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2466
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2467 if (od->icq) {
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
2468 struct client_info_s info = CLIENTINFO_ICQ_KNOWNGOOD;
5591
2327f0802baa [gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
2469 aim_send_login(sess, fr->conn, gaim_account_get_username(ac),
2327f0802baa [gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
2470 gaim_account_get_password(account), &info, key);
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
2471 } else {
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
2472 struct client_info_s info = CLIENTINFO_AIM_KNOWNGOOD;
5591
2327f0802baa [gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
2473 aim_send_login(sess, fr->conn, gaim_account_get_username(ac),
2327f0802baa [gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
2474 gaim_account_get_password(account), &info, key);
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
2475 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2476
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2477 gaim_connection_update_progress(gc, _("Password sent"), 2, OSCAR_CONNECT_STEPS);
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
2478 ck[2] = 0x6c;
7282
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
2479
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2480 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2481 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2482
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2483 static int conninitdone_chat(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2484 GaimConnection *gc = sess->aux_data;
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2485 struct chat_connection *chatcon;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2486 static int id = 1;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2487
6905
dd40a6134713 [gaim-migrate @ 7452]
Mark Doliner <markdoliner@pidgin.im>
parents: 6879
diff changeset
2488 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, 0x0001, gaim_parse_genericerr, 0);
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
2489 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_USERJOIN, gaim_conv_chat_join, 0);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
2490 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_USERLEAVE, gaim_conv_chat_leave, 0);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
2491 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_ROOMINFOUPDATE, gaim_conv_chat_info_update, 0);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
2492 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_INCOMINGMSG, gaim_conv_chat_incoming_msg, 0);
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2493
2672
5c9b7617a1f3 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
2494 aim_clientready(sess, fr->conn);
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2495
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2496 chatcon = find_oscar_chat_by_conn(gc, fr->conn);
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2497 chatcon->id = id;
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
2498 chatcon->conv = serv_got_joined_chat(gc, id++, chatcon->show);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2499
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2500 return 1;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2501 }
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2502
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2503 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
2504
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2505 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
2506 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
2507
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2508 aim_clientready(sess, fr->conn);
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2509
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2510 aim_chatnav_reqrights(sess, fr->conn);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2511
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2512 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2513 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2514
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2515 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
2516
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2517 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
2518 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
2519
7282
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
2520 aim_email_sendcookies(sess);
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
2521 aim_email_activate(sess);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2522 aim_clientready(sess, fr->conn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2523
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2524 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2525 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2526
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2527 static int conninitdone_icon(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2528 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2529 OscarData *od = gc->proto_data;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2530
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2531 aim_conn_addhandler(sess, fr->conn, 0x0018, 0x0001, gaim_parse_genericerr, 0);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2532 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_ICO, AIM_CB_ICO_ERROR, gaim_icon_error, 0);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2533 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_ICO, AIM_CB_ICO_RESPONSE, gaim_icon_parseicon, 0);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2534
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2535 aim_clientready(sess, fr->conn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2536
4823
e855589fb088 [gaim-migrate @ 5148]
Roald Dahl
parents: 4822
diff changeset
2537 od->iconconnecting = FALSE;
e855589fb088 [gaim-migrate @ 5148]
Roald Dahl
parents: 4822
diff changeset
2538
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2539 if (od->icontimer)
8287
266eacc707ac [gaim-migrate @ 9011]
Scott Lamb
parents: 8273
diff changeset
2540 gaim_timeout_remove(od->icontimer);
8273
7882af5843e9 [gaim-migrate @ 8997]
Scott Lamb
parents: 8266
diff changeset
2541 od->icontimer = gaim_timeout_add(100, gaim_icon_timerfunc, gc);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2542
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2543 return 1;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2544 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2545
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2546 static void oscar_chatnav_connect(gpointer data, gint source, GaimInputCondition cond) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2547 GaimConnection *gc = data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2548 OscarData *od;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2549 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2550 aim_conn_t *tstconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2551
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2552 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2553 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2554 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2555 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2556
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2557 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2558 sess = od->sess;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2559 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_CHATNAV);
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
2560 tstconn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2561
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2562 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2563 aim_conn_kill(sess, &tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2564 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2565 "unable to connect to chatnav server\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2566 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2567 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2568
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2569 aim_conn_completeconnect(sess, tstconn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2570 od->cnpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2571 gaim_debug_info("oscar", "chatnav: connected\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2572 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2573
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
2574 static void oscar_auth_connect(gpointer data, gint source, GaimInputCondition cond)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2575 {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2576 GaimConnection *gc = data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2577 OscarData *od;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2578 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2579 aim_conn_t *tstconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2580
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2581 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2582 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2583 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2584 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2585
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2586 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2587 sess = od->sess;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2588 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_AUTH);
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
2589 tstconn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2590
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2591 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2592 aim_conn_kill(sess, &tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2593 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2594 "unable to connect to authorizer\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2595 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2596 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2597
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2598 aim_conn_completeconnect(sess, tstconn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2599 od->paspa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2600 gaim_debug_info("oscar", "admin: connected\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2601 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2602
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
2603 static void oscar_chat_connect(gpointer data, gint source, GaimInputCondition cond)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2604 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2605 struct chat_connection *ccon = data;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2606 GaimConnection *gc = ccon->gc;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2607 OscarData *od;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2608 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2609 aim_conn_t *tstconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2610
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2611 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2612 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2613 g_free(ccon->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2614 g_free(ccon->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2615 g_free(ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2616 return;
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
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2619 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2620 sess = od->sess;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2621 tstconn = ccon->conn;
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
2622 tstconn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2623
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2624 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2625 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2626 g_free(ccon->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2627 g_free(ccon->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2628 g_free(ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2629 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2630 }
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_conn_completeconnect(sess, ccon->conn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2633 ccon->inpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2634 od->oscar_chats = g_slist_append(od->oscar_chats, ccon);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2635 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2636
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2637 static void oscar_email_connect(gpointer data, gint source, GaimInputCondition cond) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2638 GaimConnection *gc = data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2639 OscarData *od;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2640 aim_session_t *sess;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2641 aim_conn_t *tstconn;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2642
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2643 if (!g_list_find(gaim_connections_get_all(), gc)) {
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2644 close(source);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2645 return;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2646 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2647
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2648 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2649 sess = od->sess;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2650 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_EMAIL);
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
2651 tstconn->fd = source;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2652
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2653 if (source < 0) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2654 aim_conn_kill(sess, &tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2655 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2656 "unable to connect to email server\n");
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2657 return;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2658 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2659
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2660 aim_conn_completeconnect(sess, tstconn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2661 od->emlpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2662 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2663 "email: connected\n");
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2664 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2665
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2666 static void oscar_icon_connect(gpointer data, gint source, GaimInputCondition cond) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2667 GaimConnection *gc = data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2668 OscarData *od;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2669 aim_session_t *sess;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2670 aim_conn_t *tstconn;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2671
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2672 if (!g_list_find(gaim_connections_get_all(), gc)) {
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2673 close(source);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2674 return;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2675 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2676
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2677 od = gc->proto_data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2678 sess = od->sess;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2679 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_ICON);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2680 tstconn->fd = source;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2681
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2682 if (source < 0) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2683 aim_conn_kill(sess, &tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2684 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2685 "unable to connect to icon server\n");
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2686 return;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2687 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2688
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2689 aim_conn_completeconnect(sess, tstconn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2690 od->icopa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2691 gaim_debug_info("oscar", "icon: connected\n");
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2692 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2693
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2694 /* 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
2695 static int gaim_handle_redirect(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2696 GaimConnection *gc = sess->aux_data;
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2697 GaimAccount *account = gaim_connection_get_account(gc);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2698 aim_conn_t *tstconn;
4452
1e5d62c19533 [gaim-migrate @ 4727]
Sean Egan <seanegan@pidgin.im>
parents: 4443
diff changeset
2699 int i;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2700 char *host;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2701 int port;
4821
9107fba2dbe5 [gaim-migrate @ 5146]
Mark Doliner <markdoliner@pidgin.im>
parents: 4820
diff changeset
2702 va_list ap;
9107fba2dbe5 [gaim-migrate @ 5146]
Mark Doliner <markdoliner@pidgin.im>
parents: 4820
diff changeset
2703 struct aim_redirect_data *redir;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2704
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2705 port = gaim_account_get_int(account, "port", FAIM_LOGIN_PORT);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2706
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2707 va_start(ap, fr);
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2708 redir = va_arg(ap, struct aim_redirect_data *);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2709 va_end(ap);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2710
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2711 for (i = 0; i < (int)strlen(redir->ip); i++) {
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2712 if (redir->ip[i] == ':') {
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2713 port = atoi(&(redir->ip[i+1]));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2714 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2715 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2716 }
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2717 host = g_strndup(redir->ip, i);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2718
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2719 switch(redir->group) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2720 case 0x7: /* Authorizer */
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2721 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2722 "Reconnecting with authorizor...\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2723 tstconn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2724 if (tstconn == NULL) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2725 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2726 "unable to reconnect with authorizer\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2727 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2728 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2729 }
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
2730 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2731 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
2732
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2733 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2734 if (gaim_proxy_connect(account, host, port, oscar_auth_connect, gc) != 0) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2735 aim_conn_kill(sess, &tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2736 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2737 "unable to reconnect with authorizer\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2738 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2739 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2740 }
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
2741 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2742 break;
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2743
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2744 case 0xd: /* ChatNav */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2745 tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHATNAV, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2746 if (tstconn == NULL) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2747 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2748 "unable to connect to chatnav server\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2749 g_free(host);
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 }
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
2752 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2753 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
2754
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2755 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2756 if (gaim_proxy_connect(account, host, port, oscar_chatnav_connect, gc) != 0) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2757 aim_conn_kill(sess, &tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2758 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2759 "unable to connect to chatnav server\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2760 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2761 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2762 }
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
2763 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2764 break;
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2765
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2766 case 0xe: { /* Chat */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2767 struct chat_connection *ccon;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2768
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2769 tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHAT, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2770 if (tstconn == NULL) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2771 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2772 "unable to connect to chat server\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2773 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2774 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2775 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2776
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
2777 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2778 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
2779
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2780 ccon = g_new0(struct chat_connection, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2781 ccon->conn = tstconn;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2782 ccon->gc = gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2783 ccon->fd = -1;
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2784 ccon->name = g_strdup(redir->chat.room);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2785 ccon->exchange = redir->chat.exchange;
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2786 ccon->instance = redir->chat.instance;
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2787 ccon->show = extract_name(redir->chat.room);
4634
c4318fc60090 [gaim-migrate @ 4941]
Nathan Walp <nwalp@pidgin.im>
parents: 4628
diff changeset
2788
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2789 ccon->conn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2790 if (gaim_proxy_connect(account, host, port, oscar_chat_connect, ccon) != 0) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2791 aim_conn_kill(sess, &tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2792 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2793 "unable to connect to chat server\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2794 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2795 g_free(ccon->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2796 g_free(ccon->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2797 g_free(ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2798 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2799 }
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
2800 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2801 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2802 "Connected to chat room %s exchange %hu\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2803 ccon->name, ccon->exchange);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2804 } break;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2805
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2806 case 0x0010: { /* icon */
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2807 if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_ICON, NULL))) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2808 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2809 "unable to connect to icon server\n");
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2810 g_free(host);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2811 return 1;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2812 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2813 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2814 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_icon, 0);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2815
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2816 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2817 if (gaim_proxy_connect(account, host, port, oscar_icon_connect, gc) != 0) {
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2818 aim_conn_kill(sess, &tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2819 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2820 "unable to connect to icon server\n");
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2821 g_free(host);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2822 return 1;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2823 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2824 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2825 } break;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2826
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2827 case 0x0018: { /* email */
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2828 if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_EMAIL, NULL))) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2829 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2830 "unable to connect to email server\n");
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2831 g_free(host);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2832 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2833 }
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
2834 aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2835 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
2836
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2837 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2838 if (gaim_proxy_connect(account, host, port, oscar_email_connect, gc) != 0) {
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2839 aim_conn_kill(sess, &tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2840 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2841 "unable to connect to email server\n");
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2842 g_free(host);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2843 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2844 }
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
2845 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2846 } break;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2847
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2848 default: /* huh? */
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2849 gaim_debug_warning("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2850 "got redirect for unknown service 0x%04hx\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2851 redir->group);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2852 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2853 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2854
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2855 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2856 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2857 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2858
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2859 static int gaim_parse_oncoming(aim_session_t *sess, aim_frame_t *fr, ...)
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2860 {
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2861 GaimConnection *gc;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2862 GaimAccount *account;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2863 OscarData *od;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2864 struct buddyinfo *bi;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2865 time_t time_idle = 0, signon = 0;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2866 int type = 0;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2867 int caps = 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2868 va_list ap;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2869 aim_userinfo_t *info;
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2870 gboolean buddy_is_away = FALSE;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2871
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2872 gc = sess->aux_data;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2873 account = gaim_connection_get_account(gc);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2874 od = gc->proto_data;
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2875
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2876 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2877 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2878 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2879
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2880 if (info->present & AIM_USERINFO_PRESENT_CAPABILITIES)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2881 caps = info->capabilities;
3267
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
2882
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
2883 if (info->present & AIM_USERINFO_PRESENT_FLAGS) {
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
2884 if (info->flags & AIM_FLAG_AWAY)
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2885 buddy_is_away = TRUE;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2886 }
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2887
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2888 if (info->present & AIM_USERINFO_PRESENT_ICQEXTSTATUS) {
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2889 type = (info->icqinfo.status << 16);
3013
b937e542f50e [gaim-migrate @ 3026]
Sean Egan <seanegan@pidgin.im>
parents: 3009
diff changeset
2890 if (!(info->icqinfo.status & AIM_ICQ_STATE_CHAT) &&
b937e542f50e [gaim-migrate @ 3026]
Sean Egan <seanegan@pidgin.im>
parents: 3009
diff changeset
2891 (info->icqinfo.status != AIM_ICQ_STATE_NORMAL)) {
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2892 buddy_is_away = TRUE;
3013
b937e542f50e [gaim-migrate @ 3026]
Sean Egan <seanegan@pidgin.im>
parents: 3009
diff changeset
2893 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2894 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2895
7141
431a007467e8 [gaim-migrate @ 7708]
Mark Doliner <markdoliner@pidgin.im>
parents: 7129
diff changeset
2896 if (caps & AIM_CAPS_ICQ_DIRECT)
431a007467e8 [gaim-migrate @ 7708]
Mark Doliner <markdoliner@pidgin.im>
parents: 7129
diff changeset
2897 caps ^= AIM_CAPS_ICQ_DIRECT;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2898
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2899 if (info->present & AIM_USERINFO_PRESENT_IDLE) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2900 time(&time_idle);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2901 time_idle -= info->idletime*60;
9295
a0ea1692dde9 [gaim-migrate @ 10098]
Mark Doliner <markdoliner@pidgin.im>
parents: 9285
diff changeset
2902 /* time_idle should be the seconds since epoch at which the user became idle */
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2903 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2904
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
2905 if (info->present & AIM_USERINFO_PRESENT_ONLINESINCE)
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
2906 signon = info->onlinesince;
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
2907 else if (info->present & AIM_USERINFO_PRESENT_SESSIONLEN)
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2908 signon = time(NULL) - info->sessionlen;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2909
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
2910 if (!aim_sncmp(gaim_account_get_username(account), info->sn))
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2911 gaim_connection_set_display_name(gc, info->sn);
2305
9ba346379088 [gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2303
diff changeset
2912
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
2913 bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(account, info->sn));
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2914 if (!bi) {
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2915 bi = g_new0(struct buddyinfo, 1);
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
2916 g_hash_table_insert(od->buddyinfo, g_strdup(gaim_normalize(account, info->sn)), bi);
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2917 }
4739
7263e3ceab43 [gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents: 4738
diff changeset
2918 bi->typingnot = FALSE;
7263e3ceab43 [gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents: 4738
diff changeset
2919 bi->ico_informed = FALSE;
6857
fd79da71b071 [gaim-migrate @ 7402]
Nickolai Zeldovich
parents: 6846
diff changeset
2920 bi->ipaddr = info->icqinfo.ipaddr;
fd79da71b071 [gaim-migrate @ 7402]
Nickolai Zeldovich
parents: 6846
diff changeset
2921
fd79da71b071 [gaim-migrate @ 7402]
Nickolai Zeldovich
parents: 6846
diff changeset
2922 /* Available message stuff */
6292
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
2923 free(bi->availmsg);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
2924 if (info->avail != NULL)
8225
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
2925 bi->availmsg = oscar_encoding_to_utf8(info->avail_encoding, info->avail, info->avail_len);
5837
e75d4061396e [gaim-migrate @ 6268]
Mark Doliner <markdoliner@pidgin.im>
parents: 5836
diff changeset
2926 else
6292
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
2927 bi->availmsg = NULL;
4732
a0857625cadb [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4705
diff changeset
2928
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2929 /* Server stored icon stuff */
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2930 if (info->iconcsumlen) {
7125
69f5aeec3f5b [gaim-migrate @ 7692]
Nathan Walp <nwalp@pidgin.im>
parents: 7118
diff changeset
2931 const char *filename = NULL, *saved_b16 = NULL;
9801
c061a7280591 [gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9797
diff changeset
2932 char *b16 = NULL, *filepath = NULL;
7093
2fef5364eb2b [gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents: 7091
diff changeset
2933 GaimBuddy *b = NULL;
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2934
7106
eaeff5775818 [gaim-migrate @ 7671]
Christian Hammond <chipx86@chipx86.com>
parents: 7098
diff changeset
2935 b16 = gaim_base16_encode(info->iconcsum, info->iconcsumlen);
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
2936 b = gaim_find_buddy(account, info->sn);
7093
2fef5364eb2b [gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents: 7091
diff changeset
2937 /*
2fef5364eb2b [gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents: 7091
diff changeset
2938 * If for some reason the checksum is valid, but cached file is not..
2fef5364eb2b [gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents: 7091
diff changeset
2939 * we want to know.
2fef5364eb2b [gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents: 7091
diff changeset
2940 */
7693
1f736efbd12d [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
2941 filename = gaim_blist_node_get_string((GaimBlistNode*)b, "buddy_icon");
7093
2fef5364eb2b [gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents: 7091
diff changeset
2942 if (filename != NULL) {
2fef5364eb2b [gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents: 7091
diff changeset
2943 if (g_file_test(filename, G_FILE_TEST_EXISTS))
7693
1f736efbd12d [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
2944 saved_b16 = gaim_blist_node_get_string((GaimBlistNode*)b,
1f736efbd12d [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
2945 "icon_checksum");
9801
c061a7280591 [gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9797
diff changeset
2946 else {
c061a7280591 [gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9797
diff changeset
2947 filepath = g_build_filename(gaim_buddy_icons_get_cache_dir(),
c061a7280591 [gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9797
diff changeset
2948 filename, NULL);
c061a7280591 [gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9797
diff changeset
2949 if (g_file_test(filepath, G_FILE_TEST_EXISTS))
c061a7280591 [gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9797
diff changeset
2950 saved_b16 = gaim_blist_node_get_string((GaimBlistNode*)b,
c061a7280591 [gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9797
diff changeset
2951 "icon_checksum");
c061a7280591 [gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9797
diff changeset
2952 g_free(filepath);
c061a7280591 [gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9797
diff changeset
2953 }
7093
2fef5364eb2b [gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents: 7091
diff changeset
2954 } else
2fef5364eb2b [gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents: 7091
diff changeset
2955 saved_b16 = NULL;
7054
b3509b4108e9 [gaim-migrate @ 7617]
Herman Bloggs <herman@bluedigits.com>
parents: 7045
diff changeset
2956
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2957 if (!b16 || !saved_b16 || strcmp(b16, saved_b16)) {
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2958 GSList *cur = od->requesticon;
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2959 while (cur && aim_sncmp((char *)cur->data, info->sn))
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2960 cur = cur->next;
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2961 if (!cur) {
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
2962 od->requesticon = g_slist_append(od->requesticon, g_strdup(gaim_normalize(account, info->sn)));
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2963 if (od->icontimer)
8287
266eacc707ac [gaim-migrate @ 9011]
Scott Lamb
parents: 8273
diff changeset
2964 gaim_timeout_remove(od->icontimer);
8273
7882af5843e9 [gaim-migrate @ 8997]
Scott Lamb
parents: 8266
diff changeset
2965 od->icontimer = gaim_timeout_add(500, gaim_icon_timerfunc, gc);
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2966 }
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2967 }
6053
d4f75efb6cbc [gaim-migrate @ 6503]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
2968 g_free(b16);
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2969 }
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2970
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2971 /* XXX - Represent other ICQ statuses */
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2972 if (buddy_is_away == TRUE)
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2973 gaim_prpl_got_user_status(account, info->sn, OSCAR_STATUS_ID_AWAY, NULL);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2974 else
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2975 gaim_prpl_got_user_status(account, info->sn, OSCAR_STATUS_ID_AVAILABLE, NULL);
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
2976 gaim_prpl_got_user_login_time(account, info->sn, signon);
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
2977 gaim_prpl_got_user_warning_level(account, info->sn, info->warnlevel/10.0 + 0.5);
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
2978
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
2979 if (time_idle > 0)
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
2980 gaim_prpl_got_user_idle(account, info->sn, TRUE, time_idle);
10009
8a4fcc043f47 [gaim-migrate @ 10926]
Mark Doliner <markdoliner@pidgin.im>
parents: 9995
diff changeset
2981 else
8a4fcc043f47 [gaim-migrate @ 10926]
Mark Doliner <markdoliner@pidgin.im>
parents: 9995
diff changeset
2982 gaim_prpl_got_user_idle(account, info->sn, FALSE, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2983
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2984 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2985 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2986
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
2987 static void gaim_check_comment(OscarData *od, const char *str) {
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
2988 if ((str == NULL) || strcmp(str, ck))
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
2989 aim_locate_setcaps(od->sess, caps_aim);
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
2990 else
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
2991 aim_locate_setcaps(od->sess, caps_aim | AIM_CAPS_SECUREIM);
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
2992 }
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
2993
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2994 static int gaim_parse_offgoing(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2995 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2996 OscarData *od = gc->proto_data;
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
2997 GaimAccount *account = gaim_connection_get_account(gc);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2998 va_list ap;
4739
7263e3ceab43 [gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents: 4738
diff changeset
2999 aim_userinfo_t *info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3000
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3001 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3002 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3003 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3004
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
3005 gaim_prpl_got_user_status(account, info->sn, OSCAR_STATUS_ID_OFFLINE, NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3006
7261
4be05820d441 [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
3007 g_hash_table_remove(od->buddyinfo, gaim_normalize(gc->account, info->sn));
5837
e75d4061396e [gaim-migrate @ 6268]
Mark Doliner <markdoliner@pidgin.im>
parents: 5836
diff changeset
3008
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3009 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3010 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3011
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3012 /* BBB */
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
3013 /*
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3014 * This is called after a remote AIM user has connected to us. We
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3015 * want to do some voodoo with the socket file descriptors, add a
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3016 * callback or two, and then send the AIM_CB_OFT_PROMPT.
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
3017 */
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3018 static int oscar_sendfile_estblsh(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3019 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
3020 OscarData *od = (OscarData *)gc->proto_data;
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3021 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3022 struct aim_oft_info *oft_info;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3023 va_list ap;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3024 aim_conn_t *conn, *listenerconn;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3025
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3026 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3027 "AAA - in oscar_sendfile_estblsh\n");
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3028 va_start(ap, fr);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3029 conn = va_arg(ap, aim_conn_t *);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3030 listenerconn = va_arg(ap, aim_conn_t *);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3031 va_end(ap);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3032
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3033 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, listenerconn)))
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3034 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3035
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3036 if (!(oft_info = xfer->data))
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3037 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3038
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3039 /* Stop watching listener conn; watch transfer conn instead */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3040 gaim_input_remove(xfer->watcher);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3041 aim_conn_kill(sess, &listenerconn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3042
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3043 oft_info->conn = conn;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3044 xfer->fd = oft_info->conn->fd;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3045
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3046 aim_conn_addhandler(sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_ACK, oscar_sendfile_ack, 0);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3047 aim_conn_addhandler(sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DONE, oscar_sendfile_done, 0);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3048 xfer->watcher = gaim_input_add(oft_info->conn->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3049
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3050 /* Inform the other user that we are connected and ready to transfer */
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3051 aim_oft_sendheader(sess, AIM_CB_OFT_PROMPT, oft_info);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3052
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3053 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3054 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3055
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
3056 /*
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
3057 * This is the gaim callback passed to gaim_proxy_connect when connecting to another AIM
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3058 * user in order to transfer a file.
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
3059 */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3060 static void oscar_sendfile_connected(gpointer data, gint source, GaimInputCondition condition) {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3061 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3062 struct aim_oft_info *oft_info;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3063
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3064 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3065 "AAA - in oscar_sendfile_connected\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3066 if (!(xfer = data))
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3067 return;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3068 if (!(oft_info = xfer->data))
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3069 return;
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
3070 if (source < 0) {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
3071 gaim_xfer_cancel_remote(xfer);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3072 return;
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
3073 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3074
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3075 xfer->fd = source;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3076 oft_info->conn->fd = source;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3077
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3078 aim_conn_completeconnect(oft_info->sess, oft_info->conn);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3079 xfer->watcher = gaim_input_add(xfer->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3080
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3081 /* Inform the other user that we are connected and ready to transfer */
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3082 aim_im_sendch2_sendfile_accept(oft_info->sess, oft_info);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3083
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3084 return;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3085 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3086
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
3087 /*
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3088 * This is called when a buddy sends us some file info. This happens when they
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3089 * are sending a file to you, and you have just established a connection to them.
4650
5b2338bb19fd [gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents: 4649
diff changeset
3090 * You should send them the exact same info except use the real cookie. We also
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3091 * get like totally ready to like, receive the file, kay?
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
3092 */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3093 static int oscar_sendfile_prompt(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3094 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
3095 OscarData *od = gc->proto_data;
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3096 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3097 struct aim_oft_info *oft_info;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3098 va_list ap;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3099 aim_conn_t *conn;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3100 fu8_t *cookie;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3101 struct aim_fileheader_t *fh;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3102
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3103 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3104 "AAA - in oscar_sendfile_prompt\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3105 va_start(ap, fr);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3106 conn = va_arg(ap, aim_conn_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3107 cookie = va_arg(ap, fu8_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3108 fh = va_arg(ap, struct aim_fileheader_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3109 va_end(ap);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3110
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3111 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn)))
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3112 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3113
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3114 if (!(oft_info = xfer->data))
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3115 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3116
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3117 /* We want to stop listening with a normal thingy */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3118 gaim_input_remove(xfer->watcher);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3119 xfer->watcher = 0;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3120
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3121 /* They sent us some information about the file they're sending */
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3122 memcpy(&oft_info->fh, fh, sizeof(*fh));
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3123
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3124 /* Fill in the cookie */
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3125 memcpy(&oft_info->fh.bcookie, oft_info->cookie, 8);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3126
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3127 /* XXX - convert the name from UTF-8 to UCS-2 if necessary, and pass the encoding to the call below */
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3128 aim_oft_sendheader(oft_info->sess, AIM_CB_OFT_ACK, oft_info);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3129 gaim_xfer_start(xfer, xfer->fd, NULL, 0);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3130
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3131 return 0;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3132 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3133
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
3134 /*
4657
24c70a9dec22 [gaim-migrate @ 4968]
Mark Doliner <markdoliner@pidgin.im>
parents: 4656
diff changeset
3135 * We are sending a file to someone else. They have just acknowledged our
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3136 * prompt, so we want to start sending data like there's no tomorrow.
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
3137 */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3138 static int oscar_sendfile_ack(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3139 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
3140 OscarData *od = gc->proto_data;
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3141 GaimXfer *xfer;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3142 va_list ap;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3143 aim_conn_t *conn;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3144 fu8_t *cookie;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3145 struct aim_fileheader_t *fh;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3146
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3147 gaim_debug_info("oscar", "AAA - in oscar_sendfile_ack\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3148 va_start(ap, fr);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3149 conn = va_arg(ap, aim_conn_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3150 cookie = va_arg(ap, fu8_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3151 fh = va_arg(ap, struct aim_fileheader_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3152 va_end(ap);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3153
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3154 if (!(xfer = oscar_find_xfer_by_cookie(od->file_transfers, cookie)))
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3155 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3156
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3157 /* We want to stop listening with a normal thingy */
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3158 gaim_input_remove(xfer->watcher);
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3159 xfer->watcher = 0;
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3160
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3161 gaim_xfer_start(xfer, xfer->fd, NULL, 0);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3162
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3163 return 0;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3164 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3165
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3166 /*
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3167 * We just sent a file to someone. They said they got it and everything,
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3168 * so we can close our direct connection and what not.
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3169 */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3170 static int oscar_sendfile_done(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3171 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
3172 OscarData *od = gc->proto_data;
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3173 GaimXfer *xfer;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3174 va_list ap;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3175 aim_conn_t *conn;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3176 fu8_t *cookie;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3177 struct aim_fileheader_t *fh;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3178
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3179 gaim_debug_info("oscar", "AAA - in oscar_sendfile_done\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3180 va_start(ap, fr);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3181 conn = va_arg(ap, aim_conn_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3182 cookie = va_arg(ap, fu8_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3183 fh = va_arg(ap, struct aim_fileheader_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3184 va_end(ap);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3185
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3186 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn)))
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3187 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3188
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3189 xfer->fd = conn->fd;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3190 gaim_xfer_end(xfer);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3191
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3192 return 0;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3193 }
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3194
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3195 static int incomingim_chan1(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch1_args *args) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3196 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
3197 OscarData *od = gc->proto_data;
8708
31a7bd5a32f4 [gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents: 8701
diff changeset
3198 GaimAccount *account = gaim_connection_get_account(gc);
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
3199 GaimConvImFlags flags = 0;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3200 struct buddyinfo *bi;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3201 const char *iconfile;
9806
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3202 GString *message;
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3203 gchar *tmp;
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3204 aim_mpmsg_section_t *curpart;
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3205
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3206 gaim_debug_misc("oscar", "Recived IM from %s with %d parts\n",
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3207 userinfo->sn, args->mpmsg.numparts);
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3208
8708
31a7bd5a32f4 [gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents: 8701
diff changeset
3209 bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(account, userinfo->sn));
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3210 if (!bi) {
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3211 bi = g_new0(struct buddyinfo, 1);
8708
31a7bd5a32f4 [gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents: 8701
diff changeset
3212 g_hash_table_insert(od->buddyinfo, g_strdup(gaim_normalize(account, userinfo->sn)), bi);
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3213 }
2273
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2249
diff changeset
3214
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2249
diff changeset
3215 if (args->icbmflags & AIM_IMFLAGS_AWAY)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
3216 flags |= GAIM_CONV_IM_AUTO_RESP;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3217
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3218 if (args->icbmflags & AIM_IMFLAGS_TYPINGNOT)
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3219 bi->typingnot = TRUE;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3220 else
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3221 bi->typingnot = FALSE;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3222
4380
c7c7beab8e56 [gaim-migrate @ 4646]
Mark Doliner <markdoliner@pidgin.im>
parents: 4374
diff changeset
3223 if ((args->icbmflags & AIM_IMFLAGS_HASICON) && (args->iconlen) && (args->iconsum) && (args->iconstamp)) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3224 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3225 "%s has an icon\n", userinfo->sn);
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3226 if ((args->iconlen != bi->ico_len) || (args->iconsum != bi->ico_csum) || (args->iconstamp != bi->ico_time)) {
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3227 bi->ico_need = TRUE;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3228 bi->ico_len = args->iconlen;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3229 bi->ico_csum = args->iconsum;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3230 bi->ico_time = args->iconstamp;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3231 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3232 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3233
8708
31a7bd5a32f4 [gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents: 8701
diff changeset
3234 if ((iconfile = gaim_account_get_buddy_icon(account)) &&
7406
b0e59cabc315 [gaim-migrate @ 8006]
Sean Egan <seanegan@pidgin.im>
parents: 7389
diff changeset
3235 (args->icbmflags & AIM_IMFLAGS_BUDDYREQ) && !bi->ico_sent && bi->ico_informed) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3236 FILE *file;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3237 struct stat st;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3238
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3239 if (!stat(iconfile, &st)) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3240 char *buf = g_malloc(st.st_size);
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3241 file = fopen(iconfile, "rb");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3242 if (file) {
9532
32470c5a1d58 [gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 9481
diff changeset
3243 /* XXX - Use g_file_get_contents() */
2603
0c39616168c9 [gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2597
diff changeset
3244 int len = fread(buf, 1, st.st_size, file);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3245 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3246 "Sending buddy icon to %s (%d bytes, "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3247 "%lu reported)\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3248 userinfo->sn, len, st.st_size);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3249 aim_im_sendch2_icon(sess, userinfo->sn, buf, st.st_size,
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3250 st.st_mtime, aimutil_iconsum(buf, st.st_size));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3251 fclose(file);
2336
43d65c408209 [gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2315
diff changeset
3252 } else
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3253 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3254 "Can't open buddy icon file!\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3255 g_free(buf);
2336
43d65c408209 [gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2315
diff changeset
3256 } else
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3257 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3258 "Can't stat buddy icon file!\n");
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3259 }
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3260
9806
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3261 message = g_string_new("");
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3262 curpart = args->mpmsg.parts;
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3263 while (curpart != NULL) {
9908
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
3264 tmp = gaim_plugin_oscar_decode_im_part(account, userinfo->sn, curpart->charset, curpart->charsubset,
9806
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3265 curpart->data, curpart->datalen);
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3266 if (tmp != NULL) {
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3267 g_string_append(message, tmp);
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3268 g_free(tmp);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3269 }
9806
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3270
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3271 curpart = curpart->next;
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3272 }
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3273 tmp = g_string_free(message, FALSE);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3274
8666
582a118d6b91 [gaim-migrate @ 9418]
Mark Doliner <markdoliner@pidgin.im>
parents: 8660
diff changeset
3275 /*
8995
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
3276 * If the message is being received by an ICQ user then escape any HTML,
9016
69f5ff966dc7 [gaim-migrate @ 9792]
Luke Schierer <lschiere@pidgin.im>
parents: 9015
diff changeset
3277 * because HTML is not sent over ICQ as a means to format a message.
8995
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
3278 * so any HTML we receive is intended to be displayed
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
3279 *
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
3280 * Note: There *may* be some clients which send messages as HTML formatted -
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
3281 * they need to be special-cased somehow.
8666
582a118d6b91 [gaim-migrate @ 9418]
Mark Doliner <markdoliner@pidgin.im>
parents: 8660
diff changeset
3282 */
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
3283 if (aim_sn_is_icq(gaim_account_get_username(account)) && aim_sn_is_icq(userinfo->sn)) {
8995
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
3284 /* being recevied by ICQ from ICQ - escape HTML so it is displayed as sent */
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
3285 gchar *tmp2 = gaim_escape_html(tmp);
8493
9a0f65deacb2 [gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents: 8476
diff changeset
3286 g_free(tmp);
9a0f65deacb2 [gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents: 8476
diff changeset
3287 tmp = tmp2;
9a0f65deacb2 [gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents: 8476
diff changeset
3288 }
9a0f65deacb2 [gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents: 8476
diff changeset
3289
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6907
diff changeset
3290 serv_got_im(gc, userinfo->sn, tmp, flags, time(NULL));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3291 g_free(tmp);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3292
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3293 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3294 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3295
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3296 static int incomingim_chan2(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch2_args *args) {
9070
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3297 GaimConnection *gc;
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3298 GaimAccount *account;
9070
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3299 OscarData *od;
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3300 const char *username = NULL;
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3301 char *message = NULL;
9070
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3302
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3303 g_return_val_if_fail(sess != NULL, 0);
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3304 g_return_val_if_fail(sess->aux_data != NULL, 0);
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3305
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3306 gc = sess->aux_data;
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3307 account = gaim_connection_get_account(gc);
9070
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3308 od = gc->proto_data;
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3309 username = gaim_account_get_username(account);
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3310
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3311 if (args == NULL)
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
3312 return 0;
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3313
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3314 gaim_debug_misc("oscar", "rendezvous with %s, status is %hu\n",
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3315 userinfo->sn, args->status);
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3316
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3317 if (args->msg != NULL)
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3318 {
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3319 if (args->encoding != NULL)
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3320 {
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3321 char *encoding = NULL;
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3322 encoding = oscar_encoding_extract(args->encoding);
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3323 message = oscar_encoding_to_utf8(encoding, args->msg, args->msglen);
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3324 g_free(encoding);
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3325 } else {
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3326 if (g_utf8_validate(args->msg, args->msglen, NULL))
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3327 message = g_strdup(args->msg);
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3328 }
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3329 }
2869
3165d3aff6c0 [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
3330
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3331 if (args->reqclass & AIM_CAPS_CHAT) {
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
3332 char *name;
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
3333 GHashTable *components;
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
3334
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3335 if (!args->info.chat.roominfo.name || !args->info.chat.roominfo.exchange) {
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3336 g_free(message);
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
3337 return 1;
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3338 }
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
3339 components = g_hash_table_new_full(g_str_hash, g_str_equal, g_free,
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
3340 g_free);
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
3341 name = extract_name(args->info.chat.roominfo.name);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
3342 g_hash_table_replace(components, g_strdup("room"), g_strdup(name ? name : args->info.chat.roominfo.name));
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
3343 g_hash_table_replace(components, g_strdup("exchange"), g_strdup_printf("%d", args->info.chat.roominfo.exchange));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3344 serv_got_chat_invite(gc,
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3345 name ? name : args->info.chat.roominfo.name,
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3346 userinfo->sn,
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3347 message,
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
3348 components);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3349 if (name)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3350 g_free(name);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3351 } else if (args->reqclass & AIM_CAPS_SENDFILE) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3352 /* BBB */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3353 if (args->status == AIM_RENDEZVOUS_PROPOSE) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3354 /* Someone wants to send a file (or files) to us */
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3355 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3356 struct aim_oft_info *oft_info;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3357
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3358 if (!args->cookie || !args->port || !args->verifiedip ||
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3359 !args->info.sendfile.filename || !args->info.sendfile.totsize ||
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3360 !args->info.sendfile.totfiles || !args->reqclass) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3361 gaim_debug_warning("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3362 "%s tried to send you a file with incomplete "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3363 "information.\n", userinfo->sn);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3364 if (args->proxyip)
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3365 gaim_debug_warning("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3366 "IP for a proxy server was given. Gaim "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3367 "does not support this yet.\n");
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3368 g_free(message);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3369 return 1;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3370 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3371
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3372 if (args->info.sendfile.subtype == AIM_OFT_SUBTYPE_SEND_DIR) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3373 /* last char of the ft req is a star, they are sending us a
8735
01248ea222d3 [gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents: 8733
diff changeset
3374 * directory -- remove the star and trailing slash so we don't save
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3375 * directories that look like 'dirname\*' -- arl */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3376 char *tmp = strrchr(args->info.sendfile.filename, '\\');
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3377 if (tmp && (tmp[1] == '*')) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3378 tmp[0] = '\0';
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3379 }
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3380 gaim_debug_warning("oscar",
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
3381 "We're receiving a whole directory! What fun! "
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
3382 "Especially since we don't support that!\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3383 }
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3384
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3385 /* Build the file transfer handle */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3386 xfer = gaim_xfer_new(gc->account, GAIM_XFER_RECEIVE, userinfo->sn);
5163
c4e7e5cde47d [gaim-migrate @ 5527]
Mark Doliner <markdoliner@pidgin.im>
parents: 5149
diff changeset
3387 xfer->remote_ip = g_strdup(args->verifiedip);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3388 xfer->remote_port = args->port;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3389 gaim_xfer_set_filename(xfer, args->info.sendfile.filename);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3390 gaim_xfer_set_size(xfer, args->info.sendfile.totsize);
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3391 gaim_xfer_set_message(xfer, message);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3392
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3393 /* Create the oscar-specific data */
5163
c4e7e5cde47d [gaim-migrate @ 5527]
Mark Doliner <markdoliner@pidgin.im>
parents: 5149
diff changeset
3394 oft_info = aim_oft_createinfo(od->sess, args->cookie, userinfo->sn, args->clientip, xfer->remote_port, 0, 0, NULL);
4898
285e9ff6eeb8 [gaim-migrate @ 5230]
Mark Doliner <markdoliner@pidgin.im>
parents: 4889
diff changeset
3395 if (args->proxyip)
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3396 oft_info->proxyip = g_strdup(args->proxyip);
4898
285e9ff6eeb8 [gaim-migrate @ 5230]
Mark Doliner <markdoliner@pidgin.im>
parents: 4889
diff changeset
3397 if (args->verifiedip)
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3398 oft_info->verifiedip = g_strdup(args->verifiedip);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3399 xfer->data = oft_info;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3400
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3401 /* Setup our I/O op functions */
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
3402 gaim_xfer_set_init_fnc(xfer, oscar_xfer_init_recv);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3403 gaim_xfer_set_end_fnc(xfer, oscar_xfer_end);
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
3404 gaim_xfer_set_request_denied_fnc(xfer, oscar_xfer_cancel_recv);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
3405 gaim_xfer_set_cancel_recv_fnc(xfer, oscar_xfer_cancel_recv);
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
3406 gaim_xfer_set_ack_fnc(xfer, oscar_xfer_ack_recv);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3407
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3408 /* Keep track of this transfer for later */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3409 od->file_transfers = g_slist_append(od->file_transfers, xfer);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3410
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3411 /* Now perform the request */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3412 gaim_xfer_request(xfer);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3413 } else if (args->status == AIM_RENDEZVOUS_CANCEL) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3414 /* The other user wants to cancel a file transfer */
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3415 GaimXfer *xfer;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3416 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3417 "AAA - File transfer canceled by remote user\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3418 if ((xfer = oscar_find_xfer_by_cookie(od->file_transfers, args->cookie)))
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
3419 gaim_xfer_cancel_remote(xfer);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3420 } else if (args->status == AIM_RENDEZVOUS_ACCEPT) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3421 /*
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3422 * This gets sent by the receiver of a file
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3423 * as they connect directly to us. If we don't
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3424 * get this, then maybe a third party connected
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3425 * to us, and we shouldn't send them anything.
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3426 */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3427 } else {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3428 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3429 "unknown rendezvous status!\n");
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3430 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3431 } else if (args->reqclass & AIM_CAPS_GETFILE) {
8092
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 8077
diff changeset
3432 } else if (args->reqclass & AIM_CAPS_TALK) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3433 } else if (args->reqclass & AIM_CAPS_BUDDYICON) {
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3434 gaim_buddy_icons_set_for_user(account, userinfo->sn,
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3435 args->info.icon.icon,
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
3436 args->info.icon.length);
6871
ff864e84ca84 [gaim-migrate @ 7417]
Mark Doliner <markdoliner@pidgin.im>
parents: 6857
diff changeset
3437 } else if (args->reqclass & AIM_CAPS_DIRECTIM) {
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3438 /* Consider moving all this into a helper func in the direct im block way up there */
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3439 struct ask_direct *d = g_new0(struct ask_direct, 1);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3440 struct oscar_direct_im *dim = oscar_direct_im_find(od, userinfo->sn);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3441 char buf[256];
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3442
4212
1a596d7f28ae [gaim-migrate @ 4449]
Brandon Scott
parents: 4207
diff changeset
3443 if (!args->verifiedip) {
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
3444 /* TODO: do something about this, after figuring out what it means */
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3445 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3446 "directim kill blocked (%s)\n", userinfo->sn);
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3447 g_free(message);
4650
5b2338bb19fd [gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents: 4649
diff changeset
3448 return 1;
4212
1a596d7f28ae [gaim-migrate @ 4449]
Brandon Scott
parents: 4207
diff changeset
3449 }
1a596d7f28ae [gaim-migrate @ 4449]
Brandon Scott
parents: 4207
diff changeset
3450
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3451 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3452 "%s received direct im request from %s (%s)\n",
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
3453 username, userinfo->sn, args->clientip);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3454
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3455 d->gc = gc;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3456 d->sn = g_strdup(userinfo->sn);
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
3457 /* Let's use the clientip here, because I think that's what AIM does.
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
3458 * Besides, if the clientip is wrong, we'll probably timeout faster,
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
3459 * and then ask them to connect to us. */
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
3460 snprintf(d->ip, sizeof(d->ip), "%s:%d", args->clientip, args->port?args->port:5190);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3461 memcpy(d->cookie, args->cookie, 8);
9070
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3462 if (dim && !dim->connected && aim_odc_getcookie(dim->conn) && args->cookie &&
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3463 (!memcmp(aim_odc_getcookie(dim->conn), args->cookie, 8))) {
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3464
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3465 oscar_direct_im_destroy(od, dim);
8984
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
3466 d->donttryagain = TRUE;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3467 accept_direct_im_request(d);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3468 } else {
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
3469 if (dim && !dim->connected)
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3470 gaim_debug_warning("oscar", "DirectIM: received direct im request while "
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3471 "already connected to that buddy!");
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3472 g_snprintf(buf, sizeof buf, _("%s has just asked to directly connect to %s"), userinfo->sn, username);
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3473
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3474 gaim_request_action(gc, NULL, buf,
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3475 _("This requires a direct connection between "
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3476 "the two computers and is necessary for IM "
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3477 "Images. Because your IP address will be "
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3478 "revealed, this may be considered a privacy "
9972
f39adb92a177 [gaim-migrate @ 10883]
Mark Doliner <markdoliner@pidgin.im>
parents: 9971
diff changeset
3479 "risk."),
f39adb92a177 [gaim-migrate @ 10883]
Mark Doliner <markdoliner@pidgin.im>
parents: 9971
diff changeset
3480 GAIM_DEFAULT_ACTION_NONE, d, 2,
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3481 _("Connect"), G_CALLBACK(accept_direct_im_request),
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3482 _("Cancel"), G_CALLBACK(destroy_direct_im_request));
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3483 /* FIXME: we should actually send a packet on cancel */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3484 }
8708
31a7bd5a32f4 [gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents: 8701
diff changeset
3485 } else if (args->reqclass & AIM_CAPS_ICQSERVERRELAY) {
31a7bd5a32f4 [gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents: 8701
diff changeset
3486 gaim_debug_error("oscar", "Got an ICQ Server Relay message of type %d\n", args->info.rtfmsg.msgtype);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3487 } else {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3488 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3489 "Unknown reqclass %hu\n", args->reqclass);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3490 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3491
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3492 g_free(message);
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3493
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3494 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3495 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3496
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3497 /*
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3498 * Authorization Functions
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3499 * Most of these are callbacks from dialogs. They're used by both
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3500 * methods of authorization (SSI and old-school channel 4 ICBM)
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3501 */
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3502 /* When you ask other people for authorization */
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3503 static void gaim_auth_request(struct name_data *data, char *msg) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3504 GaimConnection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3505
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
3506 if (g_list_find(gaim_connections_get_all(), gc)) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
3507 OscarData *od = gc->proto_data;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3508 GaimBuddy *buddy = gaim_find_buddy(gc->account, data->name);
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3509 GaimGroup *group = gaim_find_buddys_group(buddy);
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3510 if (buddy && group) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3511 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3512 "ssi: adding buddy %s to group %s\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3513 buddy->name, group->name);
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
3514 aim_ssi_sendauthrequest(od->sess, data->name, msg ? msg : _("Please authorize me so I can add you to my buddy list."));
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3515 if (!aim_ssi_itemlist_finditem(od->sess->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))
9620
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
3516 aim_ssi_addbuddy(od->sess, buddy->name, group->name, gaim_buddy_get_alias_only(buddy), NULL, NULL, 1);
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3517 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3518 }
4337
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
3519 }
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
3520
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
3521 static void gaim_auth_request_msgprompt(struct name_data *data) {
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
3522 gaim_request_input(data->gc, NULL, _("Authorization Request Message:"),
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8670
diff changeset
3523 NULL, _("Please authorize me!"), TRUE, FALSE, NULL,
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
3524 _("OK"), G_CALLBACK(gaim_auth_request),
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
3525 _("Cancel"), G_CALLBACK(oscar_free_name_data),
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
3526 data);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3527 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3528
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3529 static void gaim_auth_dontrequest(struct name_data *data) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3530 GaimConnection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3531
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
3532 if (g_list_find(gaim_connections_get_all(), gc)) {
8151
195a587b6c32 [gaim-migrate @ 8863]
Mark Doliner <markdoliner@pidgin.im>
parents: 8150
diff changeset
3533 /* Remove from local list */
195a587b6c32 [gaim-migrate @ 8863]
Mark Doliner <markdoliner@pidgin.im>
parents: 8150
diff changeset
3534 GaimBuddy *b = gaim_find_buddy(gaim_connection_get_account(gc), data->name);
195a587b6c32 [gaim-migrate @ 8863]
Mark Doliner <markdoliner@pidgin.im>
parents: 8150
diff changeset
3535 gaim_blist_remove_buddy(b);
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3536 }
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3537
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
3538 oscar_free_name_data(data);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3539 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3540
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3541
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3542 static void gaim_auth_sendrequest(GaimConnection *gc, char *name) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3543 struct name_data *data = g_new(struct name_data, 1);
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3544 GaimBuddy *buddy;
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3545 gchar *dialog_msg, *nombre;
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3546
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
3547 buddy = gaim_find_buddy(gc->account, name);
9620
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
3548 if (buddy && (gaim_buddy_get_alias_only(buddy)))
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
3549 nombre = g_strdup_printf("%s (%s)", name, gaim_buddy_get_alias_only(buddy));
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3550 else
4830
d0f1945b27b7 [gaim-migrate @ 5155]
Mark Doliner <markdoliner@pidgin.im>
parents: 4829
diff changeset
3551 nombre = NULL;
d0f1945b27b7 [gaim-migrate @ 5155]
Mark Doliner <markdoliner@pidgin.im>
parents: 4829
diff changeset
3552
d0f1945b27b7 [gaim-migrate @ 5155]
Mark Doliner <markdoliner@pidgin.im>
parents: 4829
diff changeset
3553 dialog_msg = g_strdup_printf(_("The user %s requires authorization before being added to a buddy list. Do you want to send an authorization request?"), (nombre ? nombre : name));
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3554 data->gc = gc;
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3555 data->name = g_strdup(name);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3556 data->nick = NULL;
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3557
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3558 gaim_request_action(gc, NULL, _("Request Authorization"), dialog_msg,
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3559 0, data, 2,
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3560 _("Request Authorization"),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3561 G_CALLBACK(gaim_auth_request_msgprompt),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3562 _("Cancel"), G_CALLBACK(gaim_auth_dontrequest));
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3563
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3564 g_free(dialog_msg);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3565 g_free(nombre);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3566 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3567
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3568
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3569 static void gaim_auth_sendrequest_menu(GaimBlistNode *node, gpointer ignored) {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3570 GaimBuddy *buddy;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3571 GaimConnection *gc;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3572
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3573 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node));
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3574
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3575 buddy = (GaimBuddy *) node;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3576 gc = gaim_account_get_connection(buddy->account);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3577 gaim_auth_sendrequest(gc, buddy->name);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3578 }
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3579
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3580 /* When other people ask you for authorization */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3581 static void gaim_auth_grant(struct name_data *data) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3582 GaimConnection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3583
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
3584 if (g_list_find(gaim_connections_get_all(), gc)) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
3585 OscarData *od = gc->proto_data;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
3586 #ifdef NOSSI
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3587 GaimBuddy *buddy;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3588 gchar message;
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3589 message = 0;
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
3590 buddy = gaim_find_buddy(gc->account, data->name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3591 aim_im_sendch4(od->sess, data->name, AIM_ICQMSG_AUTHGRANTED, &message);
9620
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
3592 gaim_account_notify_added(gc->account, NULL, data->name, (buddy ? gaim_buddy_get_alias_only(buddy) : NULL), NULL);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3593 #else
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
3594 aim_ssi_sendauthreply(od->sess, data->name, 0x01, NULL);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3595 #endif
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3596 }
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3597
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
3598 oscar_free_name_data(data);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3599 }
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3600
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3601 /* When other people ask you for authorization */
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3602 static void gaim_auth_dontgrant(struct name_data *data, char *msg) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3603 GaimConnection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3604
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
3605 if (g_list_find(gaim_connections_get_all(), gc)) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
3606 OscarData *od = gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3607 #ifdef NOSSI
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3608 aim_im_sendch4(od->sess, data->name, AIM_ICQMSG_AUTHDENIED, msg ? msg : _("No reason given."));
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3609 #else
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
3610 aim_ssi_sendauthreply(od->sess, data->name, 0x00, msg ? msg : _("No reason given."));
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3611 #endif
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3612 }
4337
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
3613 }
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
3614
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
3615 static void gaim_auth_dontgrant_msgprompt(struct name_data *data) {
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
3616 gaim_request_input(data->gc, NULL, _("Authorization Denied Message:"),
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8670
diff changeset
3617 NULL, _("No reason given."), TRUE, FALSE, NULL,
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
3618 _("OK"), G_CALLBACK(gaim_auth_dontgrant),
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
3619 _("Cancel"), G_CALLBACK(oscar_free_name_data),
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
3620 data);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3621 }
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3622
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
3623 /* When someone sends you buddies */
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
3624 static void gaim_icq_buddyadd(struct name_data *data) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3625 GaimConnection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3626
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
3627 if (g_list_find(gaim_connections_get_all(), gc)) {
7060
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
3628 gaim_blist_request_add_buddy(gaim_connection_get_account(gc), data->name, NULL, data->nick);
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3629 }
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3630
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
3631 oscar_free_name_data(data);
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3632 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3633
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3634 static int incomingim_chan4(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch4_args *args, time_t t) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3635 GaimConnection *gc = sess->aux_data;
9908
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
3636 GaimAccount *account = gaim_connection_get_account(gc);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3637 gchar **msg1, **msg2;
6051
6d481c30603c [gaim-migrate @ 6501]
Mark Doliner <markdoliner@pidgin.im>
parents: 6040
diff changeset
3638 int i, numtoks;
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3639
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
3640 if (!args->type || !args->msg || !args->uin)
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
3641 return 1;
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3642
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3643 gaim_debug_info("oscar",
9908
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
3644 "Received a channel 4 message of type 0x%02hhx.\n",
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
3645 args->type);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3646
9919
938f9e7a4db9 [gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
3647 /*
938f9e7a4db9 [gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
3648 * Split up the message at the delimeter character, then convert each
938f9e7a4db9 [gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
3649 * string to UTF-8. Unless, of course, this is a type 1 message. If
938f9e7a4db9 [gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
3650 * this is a type 1 message, then the delimiter 0xfe could be a valid
938f9e7a4db9 [gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
3651 * character in whatever encoding the message was sent in. Type 1
938f9e7a4db9 [gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
3652 * messages are always made up of only one part, so we can easily account
938f9e7a4db9 [gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
3653 * for this suck-ass part of the protocol by splitting the string into at
938f9e7a4db9 [gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
3654 * most 1 baby string.
938f9e7a4db9 [gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
3655 */
938f9e7a4db9 [gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
3656 msg1 = g_strsplit(args->msg, "\376", (args->type == 0x01 ? 1 : 0));
6051
6d481c30603c [gaim-migrate @ 6501]
Mark Doliner <markdoliner@pidgin.im>
parents: 6040
diff changeset
3657 for (numtoks=0; msg1[numtoks]; numtoks++);
6d481c30603c [gaim-migrate @ 6501]
Mark Doliner <markdoliner@pidgin.im>
parents: 6040
diff changeset
3658 msg2 = (gchar **)g_malloc((numtoks+1)*sizeof(gchar *));
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3659 for (i=0; msg1[i]; i++) {
7478
a7df4df98778 [gaim-migrate @ 8091]
Herman Bloggs <herman@bluedigits.com>
parents: 7475
diff changeset
3660 gaim_str_strip_cr(msg1[i]);
9908
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
3661 msg2[i] = gaim_plugin_oscar_decode_im_part(account, "1", AIM_CHARSET_ASCII, 0x0000, msg1[i], strlen(msg1[i]));
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3662 }
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3663 msg2[i] = NULL;
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3664
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
3665 switch (args->type) {
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3666 case 0x01: { /* MacICQ message or basic offline message */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3667 if (i >= 1) {
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
3668 gchar *uin = g_strdup_printf("%u", args->uin);
8493
9a0f65deacb2 [gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents: 8476
diff changeset
3669 gchar *tmp;
9a0f65deacb2 [gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents: 8476
diff changeset
3670
9a0f65deacb2 [gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents: 8476
diff changeset
3671 /* If the message came from an ICQ user then escape any HTML */
8501
e23ebaeeb113 [gaim-migrate @ 9237]
Mark Doliner <markdoliner@pidgin.im>
parents: 8493
diff changeset
3672 tmp = gaim_escape_html(msg2[0]);
8493
9a0f65deacb2 [gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents: 8476
diff changeset
3673
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3674 if (t) { /* This is an offline message */
9680
170d9c1ab218 [gaim-migrate @ 10532]
Dave West <kat@users.sourceforge.net>
parents: 9661
diff changeset
3675 /* The timestamp is UTC-ish, so we need to get the offset */
9698
d83c7c4b0ccc [gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents: 9680
diff changeset
3676 #ifdef HAVE_TM_GMTOFF
9724
7e977ad7ccef [gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents: 9713
diff changeset
3677 time_t now;
7e977ad7ccef [gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents: 9713
diff changeset
3678 struct tm *tm;
7e977ad7ccef [gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents: 9713
diff changeset
3679 now = time(NULL);
7e977ad7ccef [gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents: 9713
diff changeset
3680 tm = localtime(&now);
7e977ad7ccef [gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents: 9713
diff changeset
3681 t += tm->tm_gmtoff;
9698
d83c7c4b0ccc [gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents: 9680
diff changeset
3682 #else
d83c7c4b0ccc [gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents: 9680
diff changeset
3683 # ifdef HAVE_TIMEZONE
9680
170d9c1ab218 [gaim-migrate @ 10532]
Dave West <kat@users.sourceforge.net>
parents: 9661
diff changeset
3684 tzset();
170d9c1ab218 [gaim-migrate @ 10532]
Dave West <kat@users.sourceforge.net>
parents: 9661
diff changeset
3685 t -= timezone;
9698
d83c7c4b0ccc [gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents: 9680
diff changeset
3686 # endif
d83c7c4b0ccc [gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents: 9680
diff changeset
3687 #endif
8514
8c021f9defc6 [gaim-migrate @ 9252]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8501
diff changeset
3688 serv_got_im(gc, uin, tmp, 0, t);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3689 } else { /* This is a message from MacICQ/Miranda */
8514
8c021f9defc6 [gaim-migrate @ 9252]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8501
diff changeset
3690 serv_got_im(gc, uin, tmp, 0, time(NULL));
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3691 }
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3692 g_free(uin);
8493
9a0f65deacb2 [gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents: 8476
diff changeset
3693 g_free(tmp);
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3694 }
3316
43bb95f6167a [gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents: 3279
diff changeset
3695 } break;
43bb95f6167a [gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents: 3279
diff changeset
3696
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3697 case 0x04: { /* Someone sent you a URL */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3698 if (i >= 2) {
7385
000d887035a2 [gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents: 7376
diff changeset
3699 if (msg2[1] != NULL) {
000d887035a2 [gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents: 7376
diff changeset
3700 gchar *uin = g_strdup_printf("%u", args->uin);
000d887035a2 [gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents: 7376
diff changeset
3701 gchar *message = g_strdup_printf("<A HREF=\"%s\">%s</A>",
000d887035a2 [gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents: 7376
diff changeset
3702 msg2[1],
000d887035a2 [gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents: 7376
diff changeset
3703 (msg2[0] && msg2[0][0]) ? msg2[0] : msg2[1]);
000d887035a2 [gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents: 7376
diff changeset
3704 serv_got_im(gc, uin, message, 0, time(NULL));
000d887035a2 [gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents: 7376
diff changeset
3705 g_free(uin);
000d887035a2 [gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents: 7376
diff changeset
3706 g_free(message);
000d887035a2 [gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents: 7376
diff changeset
3707 }
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3708 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3709 } break;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3710
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3711 case 0x06: { /* Someone requested authorization */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3712 if (i >= 6) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3713 struct name_data *data = g_new(struct name_data, 1);
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
3714 gchar *dialog_msg = g_strdup_printf(_("The user %u wants to add you to their buddy list for the following reason:\n%s"), args->uin, msg2[5] ? msg2[5] : _("No reason given."));
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3715 gaim_debug_info("oscar",
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
3716 "Received an authorization request from UIN %u\n",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3717 args->uin);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3718 data->gc = gc;
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
3719 data->name = g_strdup_printf("%u", args->uin);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3720 data->nick = NULL;
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3721
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3722 gaim_request_action(gc, NULL, _("Authorization Request"),
9948
2642975ffb85 [gaim-migrate @ 10844]
Dave West <kat@users.sourceforge.net>
parents: 9944
diff changeset
3723 dialog_msg, GAIM_DEFAULT_ACTION_NONE, data,
2642975ffb85 [gaim-migrate @ 10844]
Dave West <kat@users.sourceforge.net>
parents: 9944
diff changeset
3724 2, _("Authorize"),
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3725 G_CALLBACK(gaim_auth_grant),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3726 _("Deny"),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3727 G_CALLBACK(gaim_auth_dontgrant_msgprompt));
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3728 g_free(dialog_msg);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3729 }
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3730 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3731
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3732 case 0x07: { /* Someone has denied you authorization */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3733 if (i >= 1) {
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
3734 gchar *dialog_msg = g_strdup_printf(_("The user %u has denied your request to add them to your buddy list for the following reason:\n%s"), args->uin, msg2[0] ? msg2[0] : _("No reason given."));
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3735 gaim_notify_info(gc, NULL, _("ICQ authorization denied."),
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3736 dialog_msg);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3737 g_free(dialog_msg);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3738 }
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3739 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3740
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3741 case 0x08: { /* Someone has granted you authorization */
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
3742 gchar *dialog_msg = g_strdup_printf(_("The user %u has granted your request to add them to your buddy list."), args->uin);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3743 gaim_notify_info(gc, NULL, "ICQ authorization accepted.",
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3744 dialog_msg);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3745 g_free(dialog_msg);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3746 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3747
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
3748 case 0x09: { /* Message from the Godly ICQ server itself, I think */
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
3749 if (i >= 5) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
3750 gchar *dialog_msg = g_strdup_printf(_("You have received a special message\n\nFrom: %s [%s]\n%s"), msg2[0], msg2[3], msg2[5]);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3751 gaim_notify_info(gc, NULL, "ICQ Server Message", dialog_msg);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
3752 g_free(dialog_msg);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
3753 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
3754 } break;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
3755
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3756 case 0x0d: { /* Someone has sent you a pager message from http://www.icq.com/your_uin */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3757 if (i >= 6) {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3758 gchar *dialog_msg = g_strdup_printf(_("You have received an ICQ page\n\nFrom: %s [%s]\n%s"), msg2[0], msg2[3], msg2[5]);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3759 gaim_notify_info(gc, NULL, "ICQ Page", dialog_msg);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3760 g_free(dialog_msg);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3761 }
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3762 } break;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3763
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3764 case 0x0e: { /* Someone has emailed you at your_uin@pager.icq.com */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3765 if (i >= 6) {
4308
8eefe9f67895 [gaim-migrate @ 4562]
Mark Doliner <markdoliner@pidgin.im>
parents: 4303
diff changeset
3766 gchar *dialog_msg = g_strdup_printf(_("You have received an ICQ email from %s [%s]\n\nMessage is:\n%s"), msg2[0], msg2[3], msg2[5]);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3767 gaim_notify_info(gc, NULL, "ICQ Email", dialog_msg);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3768 g_free(dialog_msg);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3769 }
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3770 } break;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3771
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3772 case 0x12: {
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3773 /* Ack for authorizing/denying someone. Or possibly an ack for sending any system notice */
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
3774 /* Someone added you to their buddy list? */
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3775 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3776
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
3777 case 0x13: { /* Someone has sent you some ICQ buddies */
7631
0e9e516bb6c3 [gaim-migrate @ 8255]
Nathan Walp <nwalp@pidgin.im>
parents: 7621
diff changeset
3778 guint i, num;
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3779 gchar **text;
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3780 text = g_strsplit(args->msg, "\376", 0);
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3781 if (text) {
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3782 num = 0;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3783 for (i=0; i<strlen(text[0]); i++)
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3784 num = num*10 + text[0][i]-48;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3785 for (i=0; i<num; i++) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3786 struct name_data *data = g_new(struct name_data, 1);
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
3787 gchar *message = g_strdup_printf(_("ICQ user %u has sent you a buddy: %s (%s)"), args->uin, text[i*2+2], text[i*2+1]);
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3788 data->gc = gc;
4790
765a98790ede [gaim-migrate @ 5110]
Mark Doliner <markdoliner@pidgin.im>
parents: 4785
diff changeset
3789 data->name = g_strdup(text[i*2+1]);
765a98790ede [gaim-migrate @ 5110]
Mark Doliner <markdoliner@pidgin.im>
parents: 4785
diff changeset
3790 data->nick = g_strdup(text[i*2+2]);
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3791
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3792 gaim_request_action(gc, NULL, message,
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
3793 _("Do you want to add this buddy "
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
3794 "to your buddy list?"),
9972
f39adb92a177 [gaim-migrate @ 10883]
Mark Doliner <markdoliner@pidgin.im>
parents: 9971
diff changeset
3795 GAIM_DEFAULT_ACTION_NONE, data, 2,
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
3796 _("Add"), G_CALLBACK(gaim_icq_buddyadd),
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
3797 _("Decline"), G_CALLBACK(oscar_free_name_data));
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3798 g_free(message);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3799 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3800 g_strfreev(text);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3801 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3802 } break;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3803
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
3804 case 0x1a: { /* Someone has sent you a greeting card or requested buddies? */
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3805 /* This is boring and silly. */
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3806 } break;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3807
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3808 default: {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3809 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3810 "Received a channel 4 message of unknown type "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3811 "(type 0x%02hhx).\n", args->type);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3812 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3813 }
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3814
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3815 g_strfreev(msg1);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3816 g_strfreev(msg2);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3817
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3818 return 1;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3819 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3820
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3821 static int gaim_parse_incoming_im(aim_session_t *sess, aim_frame_t *fr, ...) {
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3822 fu16_t channel;
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3823 int ret = 0;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3824 aim_userinfo_t *userinfo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3825 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3826
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3827 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3828 channel = (fu16_t)va_arg(ap, unsigned int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3829 userinfo = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3830
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3831 switch (channel) {
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3832 case 1: { /* standard message */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3833 struct aim_incomingim_ch1_args *args;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3834 args = va_arg(ap, struct aim_incomingim_ch1_args *);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3835 ret = incomingim_chan1(sess, fr->conn, userinfo, args);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3836 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3837
8735
01248ea222d3 [gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents: 8733
diff changeset
3838 case 2: { /* rendezvous */
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3839 struct aim_incomingim_ch2_args *args;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3840 args = va_arg(ap, struct aim_incomingim_ch2_args *);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3841 ret = incomingim_chan2(sess, fr->conn, userinfo, args);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3842 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3843
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3844 case 4: { /* ICQ */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3845 struct aim_incomingim_ch4_args *args;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3846 args = va_arg(ap, struct aim_incomingim_ch4_args *);
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3847 ret = incomingim_chan4(sess, fr->conn, userinfo, args, 0);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3848 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3849
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3850 default: {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3851 gaim_debug_warning("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3852 "ICBM received on unsupported channel (channel "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3853 "0x%04hx).", channel);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3854 } break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3855 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3856
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3857 va_end(ap);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3858
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3859 return ret;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3860 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3861
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3862 static int gaim_parse_misses(aim_session_t *sess, aim_frame_t *fr, ...) {
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
3863 GaimConnection *gc = sess->aux_data;
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
3864 GaimAccount *account = gaim_connection_get_account(gc);
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3865 char *buf;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3866 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3867 fu16_t chan, nummissed, reason;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3868 aim_userinfo_t *userinfo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3869
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3870 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3871 chan = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3872 userinfo = va_arg(ap, aim_userinfo_t *);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3873 nummissed = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3874 reason = (fu16_t)va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3875 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3876
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3877 switch(reason) {
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3878 case 0: /* Invalid (0) */
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3879 buf = g_strdup_printf(
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3880 ngettext(
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3881 "You missed %hu message from %s because it was invalid.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3882 "You missed %hu messages from %s because they were invalid.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3883 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3884 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3885 userinfo->sn);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3886 break;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3887 case 1: /* Message too large */
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3888 buf = g_strdup_printf(
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3889 ngettext(
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3890 "You missed %hu message from %s because it was too large.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3891 "You missed %hu messages from %s because they were too large.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3892 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3893 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3894 userinfo->sn);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3895 break;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3896 case 2: /* Rate exceeded */
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3897 buf = g_strdup_printf(
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3898 ngettext(
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3899 "You missed %hu message from %s because the rate limit has been exceeded.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3900 "You missed %hu messages from %s because the rate limit has been exceeded.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3901 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3902 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3903 userinfo->sn);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3904 break;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3905 case 3: /* Evil Sender */
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3906 buf = g_strdup_printf(
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3907 ngettext(
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3908 "You missed %hu message from %s because he/she was too evil.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3909 "You missed %hu messages from %s because he/she was too evil.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3910 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3911 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3912 userinfo->sn);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3913 break;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3914 case 4: /* Evil Receiver */
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3915 buf = g_strdup_printf(
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3916 ngettext(
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3917 "You missed %hu message from %s because you are too evil.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3918 "You missed %hu messages from %s because you are too evil.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3919 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3920 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3921 userinfo->sn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3922 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3923 default:
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3924 buf = g_strdup_printf(
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3925 ngettext(
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3926 "You missed %hu message from %s for an unknown reason.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3927 "You missed %hu messages from %s for an unknown reason.",
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3928 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3929 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3930 userinfo->sn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3931 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3932 }
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
3933
9627
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
3934 if (!gaim_conv_present_error(userinfo->sn, account, buf))
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
3935 gaim_notify_error(sess->aux_data, NULL, buf, NULL);
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3936 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3937
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3938 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3939 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3940
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3941 static int gaim_parse_clientauto_ch2(aim_session_t *sess, const char *who, fu16_t reason, const char *cookie) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3942 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
3943 OscarData *od = gc->proto_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3944
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3945 /* BBB */
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3946 switch (reason) {
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3947 case 3: { /* Decline sendfile. */
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3948 GaimXfer *xfer;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3949 struct oscar_direct_im *dim;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3950
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3951 gaim_debug_info("oscar",
9070
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3952 "AAA - Other user declined some sort of direct "
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3953 "connect attempt (automaticly?)\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3954 if ((xfer = oscar_find_xfer_by_cookie(od->file_transfers, cookie)))
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
3955 gaim_xfer_cancel_remote(xfer);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3956 else if ((dim = oscar_direct_im_find(od, who))) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3957 /* AAA should use find by cookie or something here */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3958 oscar_direct_im_disconnect(od, dim);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3959 }
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3960 } break;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3961
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3962 default: {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3963 gaim_debug_warning("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3964 "Received an unknown rendezvous client auto-response "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3965 "from %s. Type 0x%04hx\n", who, reason);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3966 }
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3967
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3968 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3969
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3970 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3971 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3972
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3973 static int gaim_parse_clientauto_ch4(aim_session_t *sess, char *who, fu16_t reason, fu32_t state, char *msg) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3974 GaimConnection *gc = sess->aux_data;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3975
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3976 switch(reason) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3977 case 0x0003: { /* Reply from an ICQ status message request */
9244
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
3978 char *title, *statusmsg, **splitmsg, *dialogmsg;
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
3979
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
3980 title = g_strdup_printf(_("Info for %s"), who);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3981
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3982 /* Split at (carriage return/newline)'s, then rejoin later with BRs between. */
9244
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
3983 statusmsg = oscar_icqstatus(state);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3984 splitmsg = g_strsplit(msg, "\r\n", 0);
9244
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
3985 dialogmsg = g_strdup_printf(_("<B>UIN:</B> %s<BR><B>Status:</B> %s<HR>%s"), who, statusmsg, g_strjoinv("<BR>", splitmsg));
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
3986 g_free(statusmsg);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3987 g_strfreev(splitmsg);
9244
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
3988
9797
b69f82378b7b [gaim-migrate @ 10665]
Evan Schoenberg <evands@pidgin.im>
parents: 9771
diff changeset
3989 gaim_notify_userinfo(gc, who, title, _("Buddy Information"), NULL, dialogmsg, NULL, NULL);
9244
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
3990
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
3991 g_free(title);
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
3992 g_free(dialogmsg);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3993 } break;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3994
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3995 default: {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3996 gaim_debug_warning("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3997 "Received an unknown client auto-response from %s. "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3998 "Type 0x%04hx\n", who, reason);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3999 } break;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4000 } /* end of switch */
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4001
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4002 return 0;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4003 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4004
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4005 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
4006 va_list ap;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4007 fu16_t chan, reason;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4008 char *who;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4009
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4010 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4011 chan = (fu16_t)va_arg(ap, unsigned int);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4012 who = va_arg(ap, char *);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4013 reason = (fu16_t)va_arg(ap, unsigned int);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4014
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4015 if (chan == 0x0002) { /* File transfer declined */
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4016 char *cookie = va_arg(ap, char *);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4017 return gaim_parse_clientauto_ch2(sess, who, reason, cookie);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4018 } else if (chan == 0x0004) { /* ICQ message */
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4019 fu32_t state = 0;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4020 char *msg = NULL;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4021 if (reason == 0x0003) {
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4022 state = va_arg(ap, fu32_t);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4023 msg = va_arg(ap, char *);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4024 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4025 return gaim_parse_clientauto_ch4(sess, who, reason, state, msg);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4026 }
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4027
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4028 va_end(ap);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4029
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4030 return 1;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4031 }
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4032
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4033 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
4034 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4035 fu16_t reason;
2865
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
4036 char *m;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4037
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4038 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4039 reason = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4040 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4041
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4042 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4043 "snac threw error (reason 0x%04hx: %s)\n", reason,
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4044 (reason < msgerrreasonlen) ? msgerrreason[reason] : "unknown");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4045
2865
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
4046 m = g_strdup_printf(_("SNAC threw error: %s\n"),
5411
b3683d2acbb4 [gaim-migrate @ 5787]
Mark Doliner <markdoliner@pidgin.im>
parents: 5402
diff changeset
4047 reason < msgerrreasonlen ? _(msgerrreason[reason]) : _("Unknown error"));
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4048 gaim_notify_error(sess->aux_data, NULL, m, NULL);
2865
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
4049 g_free(m);
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
4050
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4051 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4052 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4053
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4054 static int gaim_parse_msgerr(aim_session_t *sess, aim_frame_t *fr, ...) {
9627
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
4055 GaimConnection *gc = sess->aux_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4056 #if 0
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4057 OscarData *od = gc->proto_data;
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
4058 GaimXfer *xfer;
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
4059 #endif
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4060 va_list ap;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4061 fu16_t reason;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4062 char *data, *buf;
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
4063
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4064 va_start(ap, fr);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4065 reason = (fu16_t)va_arg(ap, unsigned int);
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4066 data = va_arg(ap, char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4067 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4068
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4069 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4070 "Message error with data %s and reason %hu\n", data, reason);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4071
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4072 /* BBB */
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
4073 #if 0
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4074 /* If this was a file transfer request, data is a cookie */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4075 if ((xfer = oscar_find_xfer_by_cookie(od->file_transfers, data))) {
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
4076 gaim_xfer_cancel_remote(xfer);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4077 return 1;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4078 }
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
4079 #endif
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4080
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4081 /* Data is assumed to be the destination sn */
9826
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4082 buf = g_strdup_printf(_("Unable to send message: %s"), (reason < msgerrreasonlen) ? msgerrreason[reason] : _("Unknown reason."));
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4083 if (!gaim_conv_present_error(data, gaim_connection_get_account(gc), buf)) {
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4084 g_free(buf);
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4085 buf = g_strdup_printf(_("Unable to send message to %s:"), data ? data : "(unknown)");
9627
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
4086 gaim_notify_error(sess->aux_data, NULL, buf,
9826
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4087 (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason."));
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4088 }
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4089 g_free(buf);
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4090
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4091 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4092 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4093
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4094 static int gaim_parse_mtn(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4095 GaimConnection *gc = sess->aux_data;
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4096 va_list ap;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4097 fu16_t type1, type2;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4098 char *sn;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4099
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4100 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4101 type1 = (fu16_t) va_arg(ap, unsigned int);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4102 sn = va_arg(ap, char *);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4103 type2 = (fu16_t) va_arg(ap, unsigned int);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4104 va_end(ap);
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4105
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4106 switch (type2) {
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4107 case 0x0000: { /* Text has been cleared */
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4108 serv_got_typing_stopped(gc, sn);
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4109 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4110
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4111 case 0x0001: { /* Paused typing */
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
4112 serv_got_typing(gc, sn, 0, GAIM_TYPED);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4113 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4114
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4115 case 0x0002: { /* Typing */
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
4116 serv_got_typing(gc, sn, 0, GAIM_TYPING);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4117 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4118
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4119 default: {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4120 gaim_debug_error("oscar", "Received unknown typing notification message from %s. Type1 is 0x%04x and type2 is 0x%04hx.\n", sn, type1, type2);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4121 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4122 }
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4123
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4124 return 1;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4125 }
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4126
7141
431a007467e8 [gaim-migrate @ 7708]
Mark Doliner <markdoliner@pidgin.im>
parents: 7129
diff changeset
4127 /*
431a007467e8 [gaim-migrate @ 7708]
Mark Doliner <markdoliner@pidgin.im>
parents: 7129
diff changeset
4128 * We get this error when there was an error in the locate family. This
7259
9d12688cee90 [gaim-migrate @ 7836]
Mark Doliner <markdoliner@pidgin.im>
parents: 7253
diff changeset
4129 * happens when you request info of someone who is offline.
7141
431a007467e8 [gaim-migrate @ 7708]
Mark Doliner <markdoliner@pidgin.im>
parents: 7129
diff changeset
4130 */
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4131 static int gaim_parse_locerr(aim_session_t *sess, aim_frame_t *fr, ...) {
9826
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4132 gchar *buf;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4133 va_list ap;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
4134 fu16_t reason;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4135 char *destn;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4136
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4137 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4138 reason = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4139 destn = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4140 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4141
7781
db624418e528 [gaim-migrate @ 8426]
Mark Doliner <markdoliner@pidgin.im>
parents: 7693
diff changeset
4142 if (destn == NULL)
7793
9d6043375b81 [gaim-migrate @ 8439]
Mark Doliner <markdoliner@pidgin.im>
parents: 7781
diff changeset
4143 return 1;
9627
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
4144
9826
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4145 buf = g_strdup_printf(_("User information not available: %s"), (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason."));
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4146 if (!gaim_conv_present_error(destn, gaim_connection_get_account((GaimConnection*)sess->aux_data), buf)) {
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4147 g_free(buf);
9627
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
4148 buf = g_strdup_printf(_("User information for %s unavailable:"), destn);
9826
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4149 gaim_notify_error(sess->aux_data, NULL, buf, (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason."));
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4150 }
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4151 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4152
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4153 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4154 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4155
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4156 static int gaim_parse_userinfo(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4157 GaimConnection *gc = sess->aux_data;
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4158 GaimAccount *account = gaim_connection_get_account(gc);
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4159 GString *str;
9244
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
4160 gchar *tmp = NULL, *info_utf8 = NULL, *away_utf8 = NULL, *title = NULL;
4791
b35003e42654 [gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents: 4790
diff changeset
4161 va_list ap;
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4162 aim_userinfo_t *userinfo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4163
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4164 va_start(ap, fr);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4165 userinfo = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4166 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4167
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4168 str = g_string_new("");
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4169 g_string_append_printf(str, "<b>%s:</b> %s", _("Screen Name"), userinfo->sn);
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4170 g_string_append_printf(str, "\n<br><b>%s</b>: %d%%", _("Warning Level"), (int)((userinfo->warnlevel/10.0) + 0.5));
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4171
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4172 if (userinfo->present & AIM_USERINFO_PRESENT_ONLINESINCE)
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
4173 oscar_string_append(str, "\n<br>", _("Online Since"),
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4174 asctime(localtime((time_t *)&userinfo->onlinesince)));
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4175
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4176 if (userinfo->present & AIM_USERINFO_PRESENT_MEMBERSINCE)
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
4177 oscar_string_append(str, "\n<br>", _("Member Since"),
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4178 asctime(localtime((time_t *)&userinfo->membersince)));
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4179
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4180 if (userinfo->present & AIM_USERINFO_PRESENT_IDLE) {
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4181 tmp = gaim_str_seconds_to_string(userinfo->idletime*60);
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
4182 oscar_string_append(str, "\n<br>", _("Idle"), tmp);
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4183 g_free(tmp);
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4184 }
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4185
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
4186 oscar_string_append_info(gc, str, "\n<br>", NULL, userinfo);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4187
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4188 if ((userinfo->flags & AIM_FLAG_AWAY) && (userinfo->away_len > 0) && (userinfo->away != NULL) && (userinfo->away_encoding != NULL)) {
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4189 tmp = oscar_encoding_extract(userinfo->away_encoding);
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4190 away_utf8 = oscar_encoding_to_utf8(tmp, userinfo->away, userinfo->away_len);
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4191 g_free(tmp);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4192 if (away_utf8 != NULL) {
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4193 g_string_append_printf(str, "\n<hr>%s", away_utf8);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4194 g_free(away_utf8);
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4195 }
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4196 }
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4197
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4198 if ((userinfo->info_len > 0) && (userinfo->info != NULL) && (userinfo->info_encoding != NULL)) {
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4199 tmp = oscar_encoding_extract(userinfo->info_encoding);
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4200 info_utf8 = oscar_encoding_to_utf8(tmp, userinfo->info, userinfo->info_len);
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4201 g_free(tmp);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4202 if (info_utf8 != NULL) {
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4203 g_string_append_printf(str, "\n<hr>%s", info_utf8);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4204 g_free(info_utf8);
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4205 }
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4206 }
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4207
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
4208 tmp = gaim_str_sub_away_formatters(str->str, gaim_account_get_username(account));
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4209 g_string_free(str, TRUE);
9244
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
4210 title = g_strdup_printf(_("Info for %s"), userinfo->sn);
9797
b69f82378b7b [gaim-migrate @ 10665]
Evan Schoenberg <evands@pidgin.im>
parents: 9771
diff changeset
4211 gaim_notify_userinfo(gc, userinfo->sn, title, _("Buddy Information"), NULL, tmp, NULL, NULL);
9244
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
4212 g_free(title);
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4213 g_free(tmp);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4214
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4215 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4216 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4217
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4218 static gboolean gaim_reqinfo_timeout_cb(void *data)
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4219 {
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4220 aim_session_t *sess = data;
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4221 GaimConnection *gc = sess->aux_data;
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4222 OscarData *od = (OscarData *)gc->proto_data;
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4223
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4224 aim_locate_dorequest(data);
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4225 od->getinfotimer = 0;
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4226
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4227 return FALSE;
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4228 }
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4229
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4230 static int gaim_reqinfo_timeout(aim_session_t *sess, aim_frame_t *fr, ...)
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4231 {
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4232 GaimConnection *gc = sess->aux_data;
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4233 OscarData *od = (OscarData *)gc->proto_data;
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4234
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4235 /*
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4236 * Wait a little while then call aim_locate_dorequest(sess). This keeps
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4237 * us from hitting the rate limit due to request away messages and info
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4238 * too quickly.
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4239 */
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4240 if (od->getinfotimer == 0)
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4241 od->getinfotimer = gaim_timeout_add(1200, gaim_reqinfo_timeout_cb, sess);
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4242
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4243 return 1;
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4244 }
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4245
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4246 static int gaim_parse_motd(aim_session_t *sess, aim_frame_t *fr, ...)
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4247 {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4248 char *msg;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4249 fu16_t id;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4250 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4251
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4252 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4253 id = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4254 msg = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4255 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4256
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4257 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4258 "MOTD: %s (%hu)\n", msg ? msg : "Unknown", id);
2092
f56061012e3c [gaim-migrate @ 2102]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
4259 if (id < 4)
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4260 gaim_notify_warning(sess->aux_data, NULL,
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4261 _("Your AIM connection may be lost."), NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4262
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4263 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4264 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4265
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4266 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
4267 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4268 fu16_t type;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4269 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4270 OscarData *od = (OscarData *)gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4271
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4272 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4273 type = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4274
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4275 switch(type) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4276 case 0x0002: {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4277 fu8_t maxrooms;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4278 struct aim_chat_exchangeinfo *exchanges;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4279 int exchangecount, i;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4280
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4281 maxrooms = (fu8_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4282 exchangecount = va_arg(ap, int);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4283 exchanges = va_arg(ap, struct aim_chat_exchangeinfo *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4284
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4285 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4286 "chat info: Chat Rights:\n");
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4287 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4288 "chat info: \tMax Concurrent Rooms: %hhd\n", maxrooms);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4289 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4290 "chat info: \tExchange List: (%d total)\n", exchangecount);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4291 for (i = 0; i < exchangecount; i++)
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4292 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4293 "chat info: \t\t%hu %s\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4294 exchanges[i].number, exchanges[i].name ? exchanges[i].name : "");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4295 while (od->create_rooms) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4296 struct create_room *cr = od->create_rooms->data;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4297 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4298 "creating room %s\n", cr->name);
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
4299 aim_chatnav_createroom(sess, fr->conn, cr->name, cr->exchange);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
4300 g_free(cr->name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4301 od->create_rooms = g_slist_remove(od->create_rooms, cr);
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
4302 g_free(cr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4303 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4304 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4305 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4306 case 0x0008: {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4307 char *fqcn, *name, *ck;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4308 fu16_t instance, flags, maxmsglen, maxoccupancy, unknown, exchange;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4309 fu8_t createperms;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4310 fu32_t createtime;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4311
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4312 fqcn = va_arg(ap, char *);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4313 instance = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4314 exchange = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4315 flags = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4316 createtime = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4317 maxmsglen = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4318 maxoccupancy = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4319 createperms = (fu8_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4320 unknown = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4321 name = va_arg(ap, char *);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4322 ck = va_arg(ap, char *);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4323
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4324 gaim_debug_misc("oscar",
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
4325 "created room: %s %hu %hu %hu %u %hu %hu %hhu %hu %s %s\n",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4326 fqcn,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4327 exchange, instance, flags,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4328 createtime,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4329 maxmsglen, maxoccupancy, createperms, unknown,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4330 name, ck);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4331 aim_chat_join(od->sess, od->conn, exchange, ck, instance);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4332 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4333 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4334 default:
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4335 gaim_debug_warning("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4336 "chatnav info: unknown type (%04hx)\n", type);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4337 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4338 }
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4339
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4340 va_end(ap);
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4341
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4342 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4343 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4344
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
4345 static int gaim_conv_chat_join(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4346 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4347 int count, i;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
4348 aim_userinfo_t *info;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4349 GaimConnection *g = sess->aux_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4350
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4351 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4352
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4353 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4354 count = va_arg(ap, int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
4355 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4356 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4357
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4358 c = find_oscar_chat_by_conn(g, fr->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4359 if (!c)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4360 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4361
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4362 for (i = 0; i < count; i++)
9846
61f7349c153a [gaim-migrate @ 10724]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9831
diff changeset
4363 gaim_conv_chat_add_user(GAIM_CONV_CHAT(c->conv), info[i].sn, NULL, GAIM_CBFLAGS_NONE, TRUE);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4364
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4365 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4366 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4367
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
4368 static int gaim_conv_chat_leave(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4369 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4370 int count, i;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
4371 aim_userinfo_t *info;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4372 GaimConnection *g = sess->aux_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4373
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4374 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4375
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4376 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4377 count = va_arg(ap, int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
4378 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4379 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4380
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4381 c = find_oscar_chat_by_conn(g, fr->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4382 if (!c)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4383 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4384
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4385 for (i = 0; i < count; i++)
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
4386 gaim_conv_chat_remove_user(GAIM_CONV_CHAT(c->conv), info[i].sn, NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4387
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4388 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4389 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4390
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
4391 static int gaim_conv_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
4392 va_list ap;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
4393 aim_userinfo_t *userinfo;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4394 struct aim_chat_roominfo *roominfo;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4395 char *roomname;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4396 int usercount;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4397 char *roomdesc;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4398 fu16_t unknown_c9, unknown_d2, unknown_d5, maxmsglen, maxvisiblemsglen;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4399 fu32_t creationtime;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4400 GaimConnection *gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4401 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
4402
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4403 va_start(ap, fr);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4404 roominfo = va_arg(ap, struct aim_chat_roominfo *);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4405 roomname = va_arg(ap, char *);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4406 usercount= va_arg(ap, int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
4407 userinfo = va_arg(ap, aim_userinfo_t *);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4408 roomdesc = va_arg(ap, char *);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4409 unknown_c9 = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4410 creationtime = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4411 maxmsglen = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4412 unknown_d2 = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4413 unknown_d5 = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4414 maxvisiblemsglen = (fu16_t)va_arg(ap, unsigned int);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4415 va_end(ap);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4416
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4417 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4418 "inside chat_info_update (maxmsglen = %hu, maxvislen = %hu)\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4419 maxmsglen, maxvisiblemsglen);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4420
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4421 ccon->maxlen = maxmsglen;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4422 ccon->maxvis = maxvisiblemsglen;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4423
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4424 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4425 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4426
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
4427 static int gaim_conv_chat_incoming_msg(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4428 GaimConnection *gc = sess->aux_data;
8225
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
4429 struct chat_connection *ccon = find_oscar_chat_by_conn(gc, fr->conn);
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
4430 gchar *utf8;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4431 va_list ap;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
4432 aim_userinfo_t *info;
8225
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
4433 int len;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4434 char *msg;
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
4435 char *charset;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4436
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4437 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
4438 info = va_arg(ap, aim_userinfo_t *);
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
4439 len = va_arg(ap, int);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4440 msg = va_arg(ap, char *);
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
4441 charset = va_arg(ap, char *);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4442 va_end(ap);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4443
8225
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
4444 utf8 = oscar_encoding_to_utf8(charset, msg, len);
8667
534bd4c4fb38 [gaim-migrate @ 9419]
Mark Doliner <markdoliner@pidgin.im>
parents: 8666
diff changeset
4445 if (utf8 == NULL)
534bd4c4fb38 [gaim-migrate @ 9419]
Mark Doliner <markdoliner@pidgin.im>
parents: 8666
diff changeset
4446 /* The conversion failed! */
8668
c72a49a7c46a [gaim-migrate @ 9420]
Mark Doliner <markdoliner@pidgin.im>
parents: 8667
diff changeset
4447 utf8 = g_strdup(_("[Unable to display a message from this user because it contained invalid characters.]"));
8225
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
4448 serv_got_chat_in(gc, ccon->id, info->sn, 0, utf8, time((time_t)NULL));
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
4449 g_free(utf8);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4450
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4451 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4452 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4453
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4454 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
4455 va_list ap;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4456 GaimConnection *gc = sess->aux_data;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4457 struct aim_emailinfo *emailinfo;
3725
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
4458 int havenewmail;
7297
5cdfc7212651 [gaim-migrate @ 7881]
Sean Egan <seanegan@pidgin.im>
parents: 7285
diff changeset
4459 char *alertitle, *alerturl;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4460
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4461 va_start(ap, fr);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4462 emailinfo = va_arg(ap, struct aim_emailinfo *);
3725
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
4463 havenewmail = va_arg(ap, int);
7301
f6a3a23fa2fc [gaim-migrate @ 7885]
Mark Doliner <markdoliner@pidgin.im>
parents: 7297
diff changeset
4464 alertitle = va_arg(ap, char *);
f6a3a23fa2fc [gaim-migrate @ 7885]
Mark Doliner <markdoliner@pidgin.im>
parents: 7297
diff changeset
4465 alerturl = va_arg(ap, char *);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4466 va_end(ap);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4467
9661
a9895242a351 [gaim-migrate @ 10509]
Daniel Atallah <datallah@pidgin.im>
parents: 9659
diff changeset
4468 if ((emailinfo != NULL) && gaim_account_get_check_mail(gc->account)) {
a9895242a351 [gaim-migrate @ 10509]
Daniel Atallah <datallah@pidgin.im>
parents: 9659
diff changeset
4469 gchar *to = g_strdup_printf("%s%s%s", gaim_account_get_username(gaim_connection_get_account(gc)),
a9895242a351 [gaim-migrate @ 10509]
Daniel Atallah <datallah@pidgin.im>
parents: 9659
diff changeset
4470 emailinfo->domain ? "@" : "",
a9895242a351 [gaim-migrate @ 10509]
Daniel Atallah <datallah@pidgin.im>
parents: 9659
diff changeset
4471 emailinfo->domain ? emailinfo->domain : "");
5542
0f02c413c862 [gaim-migrate @ 5942]
Mark Doliner <markdoliner@pidgin.im>
parents: 5540
diff changeset
4472 if (emailinfo->unread && havenewmail)
0f02c413c862 [gaim-migrate @ 5942]
Mark Doliner <markdoliner@pidgin.im>
parents: 5540
diff changeset
4473 gaim_notify_emails(gc, emailinfo->nummsgs, FALSE, NULL, NULL, (const char **)&to, (const char **)&emailinfo->url, NULL, NULL);
5537
812794b97b08 [gaim-migrate @ 5937]
Mark Doliner <markdoliner@pidgin.im>
parents: 5517
diff changeset
4474 g_free(to);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4475 }
7297
5cdfc7212651 [gaim-migrate @ 7881]
Sean Egan <seanegan@pidgin.im>
parents: 7285
diff changeset
4476
7301
f6a3a23fa2fc [gaim-migrate @ 7885]
Mark Doliner <markdoliner@pidgin.im>
parents: 7297
diff changeset
4477 if (alertitle)
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4478 gaim_debug_misc("oscar", "Got an alert '%s' %s\n", alertitle, alerturl ? alerturl : "");
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4479
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4480 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4481 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4482
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4483 static int gaim_icon_error(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4484 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4485 OscarData *od = gc->proto_data;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4486 char *sn;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4487
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4488 sn = od->requesticon->data;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4489 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4490 "removing %s from hash table\n", sn);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4491 od->requesticon = g_slist_remove(od->requesticon, sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4492 free(sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4493
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4494 if (od->icontimer)
8287
266eacc707ac [gaim-migrate @ 9011]
Scott Lamb
parents: 8273
diff changeset
4495 gaim_timeout_remove(od->icontimer);
8273
7882af5843e9 [gaim-migrate @ 8997]
Scott Lamb
parents: 8266
diff changeset
4496 od->icontimer = gaim_timeout_add(500, gaim_icon_timerfunc, gc);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4497
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4498 return 1;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4499 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4500
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4501 static int gaim_icon_parseicon(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4502 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4503 OscarData *od = gc->proto_data;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4504 GSList *cur;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4505 va_list ap;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4506 char *sn;
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
4507 fu8_t *iconcsum, *icon;
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
4508 fu16_t iconcsumlen, iconlen;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4509
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4510 va_start(ap, fr);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4511 sn = va_arg(ap, char *);
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
4512 iconcsum = va_arg(ap, fu8_t *);
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
4513 iconcsumlen = va_arg(ap, int);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4514 icon = va_arg(ap, fu8_t *);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4515 iconlen = va_arg(ap, int);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4516 va_end(ap);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4517
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
4518 if (iconlen > 0) {
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
4519 char *b16;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4520 GaimBuddy *b = gaim_find_buddy(gc->account, sn);
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
4521 gaim_buddy_icons_set_for_user(gaim_connection_get_account(gc),
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
4522 sn, icon, iconlen);
7106
eaeff5775818 [gaim-migrate @ 7671]
Christian Hammond <chipx86@chipx86.com>
parents: 7098
diff changeset
4523 b16 = gaim_base16_encode(iconcsum, iconcsumlen);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4524 if (b16) {
7693
1f736efbd12d [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
4525 gaim_blist_node_set_string((GaimBlistNode*)b, "icon_checksum", b16);
7162
dfd30c70acde [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
4526 g_free(b16);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4527 }
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
4528 }
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4529
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4530 cur = od->requesticon;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4531 while (cur) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4532 char *cursn = cur->data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4533 if (!aim_sncmp(cursn, sn)) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4534 od->requesticon = g_slist_remove(od->requesticon, cursn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4535 free(cursn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4536 cur = od->requesticon;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4537 } else
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4538 cur = cur->next;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4539 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4540
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4541 if (od->icontimer)
8287
266eacc707ac [gaim-migrate @ 9011]
Scott Lamb
parents: 8273
diff changeset
4542 gaim_timeout_remove(od->icontimer);
8273
7882af5843e9 [gaim-migrate @ 8997]
Scott Lamb
parents: 8266
diff changeset
4543 od->icontimer = gaim_timeout_add(250, gaim_icon_timerfunc, gc);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4544
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4545 return 1;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4546 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4547
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4548 static gboolean gaim_icon_timerfunc(gpointer data) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4549 GaimConnection *gc = data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4550 OscarData *od = gc->proto_data;
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4551 aim_userinfo_t *userinfo;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4552 aim_conn_t *conn;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4553
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4554 conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_ICON);
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
4555 if (!conn) {
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
4556 if (!od->iconconnecting) {
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
4557 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_ICON);
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
4558 od->iconconnecting = TRUE;
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
4559 }
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4560 return FALSE;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4561 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4562
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4563 if (od->set_icon) {
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4564 struct stat st;
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4565 const char *iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc));
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4566 if (iconfile == NULL) {
8363
d46380322c37 [gaim-migrate @ 9088]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8361
diff changeset
4567 aim_ssi_delicon(od->sess);
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4568 } else if (!stat(iconfile, &st)) {
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4569 char *buf = g_malloc(st.st_size);
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4570 FILE *file = fopen(iconfile, "rb");
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4571 if (file) {
9532
32470c5a1d58 [gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 9481
diff changeset
4572 /* XXX - Use g_file_get_contents()? */
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4573 fread(buf, 1, st.st_size, file);
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4574 fclose(file);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4575 gaim_debug_info("oscar",
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4576 "Uploading icon to icon server\n");
6879
cc7abcef355c [gaim-migrate @ 7425]
Mark Doliner <markdoliner@pidgin.im>
parents: 6873
diff changeset
4577 aim_bart_upload(od->sess, buf, st.st_size);
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4578 } else
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4579 gaim_debug_error("oscar",
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4580 "Can't open buddy icon file!\n");
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4581 g_free(buf);
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4582 } else {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4583 gaim_debug_error("oscar",
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4584 "Can't stat buddy icon file!\n");
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4585 }
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4586 od->set_icon = FALSE;
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4587 }
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4588
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4589 if (!od->requesticon) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4590 gaim_debug_misc("oscar",
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4591 "no more icons to request\n");
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4592 return FALSE;
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4593 }
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4594
7045
458b55091f8b [gaim-migrate @ 7608]
Mark Doliner <markdoliner@pidgin.im>
parents: 7038
diff changeset
4595 userinfo = aim_locate_finduserinfo(od->sess, (char *)od->requesticon->data);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4596 if ((userinfo != NULL) && (userinfo->iconcsumlen > 0)) {
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4597 aim_bart_request(od->sess, od->requesticon->data, userinfo->iconcsum, userinfo->iconcsumlen);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4598 return FALSE;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4599 } else {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4600 char *sn = od->requesticon->data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4601 od->requesticon = g_slist_remove(od->requesticon, sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4602 free(sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4603 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4604
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4605 return TRUE;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4606 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4607
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4608 /*
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4609 * 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
4610 */
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4611 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
4612 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4613 fu16_t type;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4614 char *sn;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4615
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4616 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4617 type = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4618 sn = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4619 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4620
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4621 gaim_debug_info("oscar", "Sent message to %s.\n", sn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4622
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4623 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4624 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4625
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4626 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
4627 static const char *codes[5] = {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4628 "invalid",
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4629 "change",
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4630 "warning",
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4631 "limit",
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4632 "limit cleared",
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4633 };
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4634 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4635 fu16_t code, rateclass;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4636 fu32_t windowsize, clear, alert, limit, disconnect, currentavg, maxavg;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4637
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4638 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4639 code = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4640 rateclass= (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4641 windowsize = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4642 clear = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4643 alert = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4644 limit = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4645 disconnect = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4646 currentavg = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4647 maxavg = va_arg(ap, fu32_t);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4648 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4649
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4650 gaim_debug_misc("oscar",
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
4651 "rate %s (param ID 0x%04hx): curavg = %u, maxavg = %u, alert at %u, "
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
4652 "clear warning at %u, limit at %u, disconnect at %u (window size = %u)\n",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4653 (code < 5) ? codes[code] : codes[0],
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4654 rateclass,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4655 currentavg, maxavg,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4656 alert, clear,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4657 limit, disconnect,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4658 windowsize);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4659
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4660 /* XXX fix these values */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4661 if (code == AIM_RATE_CODE_CHANGE) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4662 if (currentavg >= clear)
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4663 aim_conn_setlatency(fr->conn, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4664 } else if (code == AIM_RATE_CODE_WARNING) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4665 aim_conn_setlatency(fr->conn, windowsize/4);
2909
2935ea93dfe7 [gaim-migrate @ 2922]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2906
diff changeset
4666 } else if (code == AIM_RATE_CODE_LIMIT) {
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4667 gaim_notify_error(sess->aux_data, NULL, _("Rate limiting error."),
6040
ab00305db747 [gaim-migrate @ 6490]
Mark Doliner <markdoliner@pidgin.im>
parents: 6039
diff changeset
4668 _("The last action you attempted could not be "
ab00305db747 [gaim-migrate @ 6490]
Mark Doliner <markdoliner@pidgin.im>
parents: 6039
diff changeset
4669 "performed because you are over the rate limit. "
ab00305db747 [gaim-migrate @ 6490]
Mark Doliner <markdoliner@pidgin.im>
parents: 6039
diff changeset
4670 "Please wait 10 seconds and try again."));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4671 aim_conn_setlatency(fr->conn, windowsize/2);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4672 } else if (code == AIM_RATE_CODE_CLEARLIMIT) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4673 aim_conn_setlatency(fr->conn, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4674 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4675
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4676 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4677 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4678
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4679 static int gaim_parse_evilnotify(aim_session_t *sess, aim_frame_t *fr, ...) {
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4680 GaimConnection *gc = sess->aux_data;
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4681 GaimAccount *account = gaim_connection_get_account(gc);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4682 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4683 fu16_t newevil;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
4684 aim_userinfo_t *userinfo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4685
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4686 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4687 newevil = (fu16_t) va_arg(ap, unsigned int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
4688 userinfo = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4689 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4690
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4691 /* XXX - What's with the + 0.5? */
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4692 gaim_prpl_got_account_warning_level(account, (userinfo && userinfo->sn) ? userinfo->sn : NULL, (newevil/10.0) + 0.5);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4693
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4694 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4695 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4696
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4697 static int gaim_selfinfo(aim_session_t *sess, aim_frame_t *fr, ...) {
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4698 GaimConnection *gc = sess->aux_data;
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4699 GaimAccount *account = gaim_connection_get_account(gc);
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4700 int warning_level;
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4701 va_list ap;
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4702 aim_userinfo_t *info;
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4703
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4704 va_start(ap, fr);
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4705 info = va_arg(ap, aim_userinfo_t *);
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4706 va_end(ap);
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4707
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4708 warning_level = info->warnlevel/10.0 + 0.5;
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4709
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4710 /*
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4711 * XXX - Calling this is probably not good. We just want to set the
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4712 * warning level for our account, not tell the user that we were just
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4713 * warned.
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4714 */
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4715 gaim_prpl_got_account_warning_level(account, NULL, warning_level);
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4716
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4717 return 1;
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4718 }
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4719
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4720 static int gaim_connerr(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4721 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4722 OscarData *od = gc->proto_data;
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4723 va_list ap;
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4724 fu16_t code;
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4725 char *msg;
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4726
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4727 va_start(ap, fr);
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4728 code = (fu16_t)va_arg(ap, int);
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4729 msg = va_arg(ap, char *);
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4730 va_end(ap);
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4731
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4732 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4733 "Disconnected. Code is 0x%04x and msg is %s\n", code, msg);
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4734 if ((fr) && (fr->conn) && (fr->conn->type == AIM_CONN_TYPE_BOS)) {
4651
7f6df9e4cb0f [gaim-migrate @ 4962]
Sean Egan <seanegan@pidgin.im>
parents: 4650
diff changeset
4735 if (code == 0x0001) {
6113
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6066
diff changeset
4736 gc->wants_to_die = TRUE;
5579
9a3dbd24e80a [gaim-migrate @ 5983]
Sean Egan <seanegan@pidgin.im>
parents: 5577
diff changeset
4737 gaim_connection_error(gc, _("You have been disconnected because you have signed on with this screen name at another location."));
4651
7f6df9e4cb0f [gaim-migrate @ 4962]
Sean Egan <seanegan@pidgin.im>
parents: 4650
diff changeset
4738 } else {
5579
9a3dbd24e80a [gaim-migrate @ 5983]
Sean Egan <seanegan@pidgin.im>
parents: 5577
diff changeset
4739 gaim_connection_error(gc, _("You have been signed off for an unknown reason."));
4651
7f6df9e4cb0f [gaim-migrate @ 4962]
Sean Egan <seanegan@pidgin.im>
parents: 4650
diff changeset
4740 }
4666
fd74a2faaf94 [gaim-migrate @ 4977]
Mark Doliner <markdoliner@pidgin.im>
parents: 4665
diff changeset
4741 od->killme = TRUE;
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4742 }
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4743
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4744 return 1;
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4745 }
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4746
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
4747 static int conninitdone_bos(aim_session_t *sess, aim_frame_t *fr, ...) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4748 GaimConnection *gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4749
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
4750 aim_reqpersonalinfo(sess, fr->conn);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4751
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4752 #ifndef NOSSI
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4753 gaim_debug_info("oscar", "ssi: requesting rights and list\n");
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4754 aim_ssi_reqrights(sess);
6350
22dfc953f2fb [gaim-migrate @ 6849]
Ethan Blanton <elb@pidgin.im>
parents: 6318
diff changeset
4755 aim_ssi_reqdata(sess);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4756 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4757
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4758 aim_locate_reqrights(sess);
7285
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
4759 aim_buddylist_reqrights(sess, fr->conn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4760 aim_im_reqparams(sess);
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
4761 aim_bos_reqrights(sess, fr->conn); /* XXX - Don't call this with ssi */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4762
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4763 #ifdef NOSSI
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4764 gaim_debug_info("oscar", "bos: requesting rights\n");
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
4765 aim_bos_reqrights(sess, fr->conn);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4766 aim_bos_setgroupperm(sess, fr->conn, AIM_FLAG_ALLUSERS);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4767 aim_bos_setprivacyflags(sess, fr->conn, AIM_PRIVFLAGS_ALLOWIDLE | AIM_PRIVFLAGS_ALLOWMEMBERSINCE);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4768 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4769
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4770 gaim_connection_update_progress(gc, _("Finalizing connection"), 5, OSCAR_CONNECT_STEPS);
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4771
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4772 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4773 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4774
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
4775 static int conninitdone_admin(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4776 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4777 OscarData *od = gc->proto_data;
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4778
6905
dd40a6134713 [gaim-migrate @ 7452]
Mark Doliner <markdoliner@pidgin.im>
parents: 6879
diff changeset
4779 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_ADM, 0x0003, gaim_info_change, 0);
dd40a6134713 [gaim-migrate @ 7452]
Mark Doliner <markdoliner@pidgin.im>
parents: 6879
diff changeset
4780 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_ADM, 0x0005, gaim_info_change, 0);
dd40a6134713 [gaim-migrate @ 7452]
Mark Doliner <markdoliner@pidgin.im>
parents: 6879
diff changeset
4781 aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_ADM, 0x0007, gaim_account_confirm, 0);
dd40a6134713 [gaim-migrate @ 7452]
Mark Doliner <markdoliner@pidgin.im>
parents: 6879
diff changeset
4782
2672
5c9b7617a1f3 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
4783 aim_clientready(sess, fr->conn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4784 gaim_debug_info("oscar", "connected to admin\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4785
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4786 if (od->chpass) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4787 gaim_debug_info("oscar", "changing password\n");
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
4788 aim_admin_changepasswd(sess, fr->conn, od->newp, od->oldp);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4789 g_free(od->oldp);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4790 od->oldp = NULL;
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4791 g_free(od->newp);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4792 od->newp = NULL;
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4793 od->chpass = FALSE;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4794 }
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4795 if (od->setnick) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4796 gaim_debug_info("oscar", "formatting screen name\n");
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4797 aim_admin_setnick(sess, fr->conn, od->newsn);
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4798 g_free(od->newsn);
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4799 od->newsn = NULL;
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4800 od->setnick = FALSE;
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4801 }
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4802 if (od->conf) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4803 gaim_debug_info("oscar", "confirming account\n");
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
4804 aim_admin_reqconfirm(sess, fr->conn);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4805 od->conf = FALSE;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4806 }
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4807 if (od->reqemail) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4808 gaim_debug_info("oscar", "requesting email\n");
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
4809 aim_admin_getinfo(sess, fr->conn, 0x0011);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4810 od->reqemail = FALSE;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4811 }
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4812 if (od->setemail) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4813 gaim_debug_info("oscar", "setting email\n");
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4814 aim_admin_setemail(sess, fr->conn, od->email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4815 g_free(od->email);
5497
da3c08f3af25 [gaim-migrate @ 5893]
Mark Doliner <markdoliner@pidgin.im>
parents: 5493
diff changeset
4816 od->email = NULL;
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4817 od->setemail = FALSE;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4818 }
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4819
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4820 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4821 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4822
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4823 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
4824 struct aim_icbmparameters *params;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4825 va_list ap;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4826
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4827 va_start(ap, fr);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4828 params = va_arg(ap, struct aim_icbmparameters *);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4829 va_end(ap);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4830
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4831 /* XXX - evidently this crashes on solaris. i have no clue why
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4832 gaim_debug_misc("oscar", "ICBM Parameters: maxchannel = %hu, default flags = 0x%08lx, max msg len = %hu, "
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
4833 "max sender evil = %f, max receiver evil = %f, min msg interval = %u\n",
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4834 params->maxchan, params->flags, params->maxmsglen,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4835 ((float)params->maxsenderwarn)/10.0, ((float)params->maxrecverwarn)/10.0,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4836 params->minmsginterval);
2427
761801814c88 [gaim-migrate @ 2440]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2421
diff changeset
4837 */
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4838
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4839 /* Maybe senderwarn and recverwarn should be user preferences... */
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4840 params->flags = 0x0000000b;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4841 params->maxmsglen = 8000;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4842 params->minmsginterval = 0;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4843
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4844 aim_im_setparams(sess, params);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4845
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4846 return 1;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4847 }
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4848
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4849 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
4850 {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4851 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4852 OscarData *od = (OscarData *)gc->proto_data;
5306
1707fdf8c530 [gaim-migrate @ 5678]
Mark Doliner <markdoliner@pidgin.im>
parents: 5302
diff changeset
4853 va_list ap;
1707fdf8c530 [gaim-migrate @ 5678]
Mark Doliner <markdoliner@pidgin.im>
parents: 5302
diff changeset
4854 fu16_t maxsiglen;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4855
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4856 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4857 maxsiglen = (fu16_t) va_arg(ap, int);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4858 va_end(ap);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4859
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4860 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4861 "locate rights: max sig len = %d\n", maxsiglen);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4862
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4863 od->rights.maxsiglen = od->rights.maxawaymsglen = (guint)maxsiglen;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4864
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4865 if (od->icq)
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
4866 aim_locate_setcaps(od->sess, caps_icq);
5301
38f02eecad54 [gaim-migrate @ 5673]
Mark Doliner <markdoliner@pidgin.im>
parents: 5300
diff changeset
4867 else
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
4868 aim_locate_setcaps(od->sess, caps_aim);
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
4869 oscar_set_info(gc, gc->account->user_info);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4870
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4871 return 1;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4872 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4873
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4874 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
4875 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4876 fu16_t maxbuddies, maxwatchers;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4877 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4878 OscarData *od = (OscarData *)gc->proto_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4879
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4880 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4881 maxbuddies = (fu16_t) va_arg(ap, unsigned int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4882 maxwatchers = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4883 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4884
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4885 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4886 "buddy list rights: Max buddies = %hu / Max watchers = %hu\n", maxbuddies, maxwatchers);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4887
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4888 od->rights.maxbuddies = (guint)maxbuddies;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4889 od->rights.maxwatchers = (guint)maxwatchers;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4890
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4891 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4892 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4893
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4894 static int gaim_bosrights(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4895 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4896 OscarData *od = (OscarData *)gc->proto_data;
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
4897 va_list ap;
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
4898 fu16_t maxpermits, maxdenies;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4899
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4900 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4901 maxpermits = (fu16_t) va_arg(ap, unsigned int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4902 maxdenies = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4903 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4904
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4905 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4906 "BOS rights: Max permit = %hu / Max deny = %hu\n", maxpermits, maxdenies);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4907
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4908 od->rights.maxpermits = (guint)maxpermits;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4909 od->rights.maxdenies = (guint)maxdenies;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4910
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
4911 gaim_connection_set_state(gc, GAIM_CONNECTED);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4912 serv_finish_login(gc);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4913
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4914 gaim_debug_info("oscar", "buddy list loaded\n");
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4915
2672
5c9b7617a1f3 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
4916 aim_clientready(sess, fr->conn);
5948
2527d515c3b8 [gaim-migrate @ 6392]
Mark Doliner <markdoliner@pidgin.im>
parents: 5920
diff changeset
4917 aim_srv_setavailmsg(sess, NULL);
7474
757569d68123 [gaim-migrate @ 8087]
Mark Doliner <markdoliner@pidgin.im>
parents: 7465
diff changeset
4918 aim_srv_setidle(sess, 0);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4919
4664
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
4920 if (od->icq) {
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
4921 aim_icq_reqofflinemsgs(sess);
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
4922 aim_icq_hideip(sess);
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
4923 }
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4924
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
4925 aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_CHATNAV);
4102
06290da3f88d [gaim-migrate @ 4317]
Mark Doliner <markdoliner@pidgin.im>
parents: 4076
diff changeset
4926 if (sess->authinfo->email)
06290da3f88d [gaim-migrate @ 4317]
Mark Doliner <markdoliner@pidgin.im>
parents: 4076
diff changeset
4927 aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_EMAIL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4928
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4929 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4930 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4931
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4932 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
4933 va_list ap;
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4934 struct aim_icq_offlinemsg *msg;
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
4935 struct aim_incomingim_ch4_args args;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
4936 time_t t;
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4937
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4938 va_start(ap, fr);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4939 msg = va_arg(ap, struct aim_icq_offlinemsg *);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4940 va_end(ap);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4941
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4942 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4943 "Received offline message. Converting to channel 4 ICBM...\n");
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
4944 args.uin = msg->sender;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
4945 args.type = msg->type;
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
4946 args.flags = msg->flags;
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
4947 args.msglen = msg->msglen;
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
4948 args.msg = msg->msg;
7108
82655fa54acb [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
4949 t = gaim_time_build(msg->year, msg->month, msg->day, msg->hour, msg->minute, 0);
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
4950 incomingim_chan4(sess, fr->conn, NULL, &args, t);
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4951
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4952 return 1;
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4953 }
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4954
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4955 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
4956 {
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4957 aim_icq_ackofflinemsgs(sess);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4958 return 1;
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4959 }
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4960
7388
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4961 #if 0
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4962 /*
7465
17e1e9e996ad [gaim-migrate @ 8078]
Mark Doliner <markdoliner@pidgin.im>
parents: 7422
diff changeset
4963 * Update, 2003-11-09:
17e1e9e996ad [gaim-migrate @ 8078]
Mark Doliner <markdoliner@pidgin.im>
parents: 7422
diff changeset
4964 * Joseph S. Myers, a gcc dude, fixed this for gcc 3.4! Rock on!
17e1e9e996ad [gaim-migrate @ 8078]
Mark Doliner <markdoliner@pidgin.im>
parents: 7422
diff changeset
4965 *
7388
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4966 * It may not be my place to do this, but...
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4967 * I feel pretty strongly that the "last 2 digits" warning is ridiculously
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4968 * stupid, and should not exist for % switches (%x in our case) that request
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4969 * a year in the preferred representation for the current locale. For that
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4970 * reason I've chosen to not use this workaround (n., see kluge).
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4971 *
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4972 * I have a date. I want to show it to the user in the "preferred" way.
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4973 * Whether that displays a 2 digit year is perfectly fine--after all, it's
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4974 * what the locale wanted.
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4975 *
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4976 * If I have a necessity for a full representation of the year in the current
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4977 * locale, then I'll use a switch that returns a full representation of the
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4978 * year.
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4979 *
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4980 * If you think the preferred locale should show 4 digits instead of 2 digits
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4981 * (because you're anal, or whatever), then change the f***ing locale.
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4982 *
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4983 * I guess the bottom line is--I'm trying to show a date to the user how they
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4984 * prefer to see it, why the hell does gcc want me to change that?
7389
56f574d188b3 [gaim-migrate @ 7984]
Mark Doliner <markdoliner@pidgin.im>
parents: 7388
diff changeset
4985 *
56f574d188b3 [gaim-migrate @ 7984]
Mark Doliner <markdoliner@pidgin.im>
parents: 7388
diff changeset
4986 * See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=3190
56f574d188b3 [gaim-migrate @ 7984]
Mark Doliner <markdoliner@pidgin.im>
parents: 7388
diff changeset
4987 * See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8714
7388
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4988 */
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4989
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4990 /*
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4991 * This function was recommended by the STRFTIME(3) man page to remove the
7386
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
4992 * "last 2 digits" warning.
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
4993 */
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
4994 static size_t my_strftime(char *s, size_t max, const char *fmt,
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
4995 const struct tm *tm)
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
4996 {
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
4997 return strftime(s, max, fmt, tm);
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
4998 }
7388
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4999 #endif
7386
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5000
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5001 static int gaim_icqinfo(aim_session_t *sess, aim_frame_t *fr, ...)
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
5002 {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5003 GaimConnection *gc = sess->aux_data;
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5004 OscarData *od = (OscarData *)gc->proto_data;
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5005 GaimBuddy *buddy;
8853
4f5b8b401c6f [gaim-migrate @ 9620]
Nathan Walp <nwalp@pidgin.im>
parents: 8838
diff changeset
5006 struct buddyinfo *bi = NULL;
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5007 gchar who[16];
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5008 GString *str;
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5009 gchar *primary, *utf8;
9634
166f3ac40f4a [gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents: 9631
diff changeset
5010 const gchar *alias;
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
5011 va_list ap;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5012 struct aim_icq_info *info;
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
5013
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
5014 va_start(ap, fr);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5015 info = va_arg(ap, struct aim_icq_info *);
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
5016 va_end(ap);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
5017
4664
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
5018 if (!info->uin)
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
5019 return 0;
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
5020
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5021 str = g_string_sized_new(100);
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
5022 g_snprintf(who, sizeof(who), "%u", info->uin);
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5023 buddy = gaim_find_buddy(gaim_connection_get_account(gc), who);
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5024 if (buddy != NULL)
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5025 bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(buddy->account, buddy->name));
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5026
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5027 g_string_append_printf(str, "<b>%s:</b> %s", _("UIN"), who);
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5028 oscar_string_append(str, "\n<br>", _("Nick"), info->nick);
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5029 if ((bi != NULL) && (bi->ipaddr != 0)) {
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5030 char *tstr = g_strdup_printf("%hhu.%hhu.%hhu.%hhu",
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5031 (bi->ipaddr & 0xff000000) >> 24,
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5032 (bi->ipaddr & 0x00ff0000) >> 16,
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5033 (bi->ipaddr & 0x0000ff00) >> 8,
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5034 (bi->ipaddr & 0x000000ff));
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5035 oscar_string_append(str, "\n<br>", _("IP Address"), tstr);
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5036 g_free(tstr);
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5037 }
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5038 oscar_string_append(str, "\n<br>", _("First Name"), info->first);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5039 oscar_string_append(str, "\n<br>", _("Last Name"), info->last);
7108
82655fa54acb [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
5040 if (info->email && info->email[0] && (utf8 = gaim_utf8_try_convert(info->email))) {
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5041 g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"mailto:%s\">%s</a>", _("Email Address"), utf8, utf8);
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5042 g_free(utf8);
4625
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
5043 }
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
5044 if (info->numaddresses && info->email2) {
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
5045 int i;
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
5046 for (i = 0; i < info->numaddresses; i++) {
7108
82655fa54acb [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
5047 if (info->email2[i] && info->email2[i][0] && (utf8 = gaim_utf8_try_convert(info->email2[i]))) {
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5048 g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"mailto%s\">%s</a>", _("Email Address"), utf8, utf8);
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5049 g_free(utf8);
4643
549034ae52ab [gaim-migrate @ 4953]
Nathan Walp <nwalp@pidgin.im>
parents: 4642
diff changeset
5050 }
4625
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
5051 }
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5052 }
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5053 oscar_string_append(str, "\n<br>", _("Mobile Phone"), info->mobile);
10022
b5bb3bdd4d1a [gaim-migrate @ 10954]
Mark Doliner <markdoliner@pidgin.im>
parents: 10009
diff changeset
5054 if (info->gender != 0)
b5bb3bdd4d1a [gaim-migrate @ 10954]
Mark Doliner <markdoliner@pidgin.im>
parents: 10009
diff changeset
5055 oscar_string_append(str, "\n<br>", _("Gender"), info->gender == 1 ? _("Female") : _("Male"));
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5056 if (info->birthyear || info->birthmonth || info->birthday) {
4627
4895653771a7 [gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents: 4625
diff changeset
5057 char date[30];
4895653771a7 [gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents: 4625
diff changeset
5058 struct tm tm;
4895653771a7 [gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents: 4625
diff changeset
5059 tm.tm_mday = (int)info->birthday;
4895653771a7 [gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents: 4625
diff changeset
5060 tm.tm_mon = (int)info->birthmonth-1;
4895653771a7 [gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents: 4625
diff changeset
5061 tm.tm_year = (int)info->birthyear-1900;
7388
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
5062 strftime(date, sizeof(date), "%x", &tm);
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5063 oscar_string_append(str, "\n<br>", _("Birthday"), date);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5064 }
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5065 if (info->age) {
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5066 char age[5];
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5067 snprintf(age, sizeof(age), "%hhd", info->age);
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5068 oscar_string_append(str, "\n<br>", _("Age"), age);
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
5069 }
7108
82655fa54acb [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
5070 if (info->personalwebpage && info->personalwebpage[0] && (utf8 = gaim_utf8_try_convert(info->personalwebpage))) {
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5071 g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"%s\">%s</a>", _("Personal Web Page"), utf8, utf8);
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5072 g_free(utf8);
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
5073 }
7108
82655fa54acb [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
5074 if (info->info && info->info[0] && (utf8 = gaim_utf8_try_convert(info->info))) {
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5075 g_string_append_printf(str, "<hr><b>%s:</b><br>%s", _("Additional Information"), utf8);
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5076 g_free(utf8);
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5077 }
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5078 g_string_append_printf(str, "<hr>\n");
4641
bcc6f5e3018a [gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
5079 if ((info->homeaddr && (info->homeaddr[0])) || (info->homecity && info->homecity[0]) || (info->homestate && info->homestate[0]) || (info->homezip && info->homezip[0])) {
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5080 g_string_append_printf(str, "<b>%s:</b>", _("Home Address"));
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5081 oscar_string_append(str, "\n<br>", _("Address"), info->homeaddr);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5082 oscar_string_append(str, "\n<br>", _("City"), info->homecity);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5083 oscar_string_append(str, "\n<br>", _("State"), info->homestate);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5084 oscar_string_append(str, "\n<br>", _("Zip Code"), info->homezip);
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5085 g_string_append_printf(str, "\n<hr>\n");
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5086 }
4641
bcc6f5e3018a [gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
5087 if ((info->workaddr && info->workaddr[0]) || (info->workcity && info->workcity[0]) || (info->workstate && info->workstate[0]) || (info->workzip && info->workzip[0])) {
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5088 g_string_append_printf(str, "<b>%s:</b>", _("Work Address"));
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5089 oscar_string_append(str, "\n<br>", _("Address"), info->workaddr);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5090 oscar_string_append(str, "\n<br>", _("City"), info->workcity);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5091 oscar_string_append(str, "\n<br>", _("State"), info->workstate);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5092 oscar_string_append(str, "\n<br>", _("Zip Code"), info->workzip);
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5093 g_string_append_printf(str, "\n<hr>\n");
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5094 }
4641
bcc6f5e3018a [gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
5095 if ((info->workcompany && info->workcompany[0]) || (info->workdivision && info->workdivision[0]) || (info->workposition && info->workposition[0]) || (info->workwebpage && info->workwebpage[0])) {
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5096 g_string_append_printf(str, "<b>%s:</b>", _("Work Information"));
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5097 oscar_string_append(str, "\n<br>", _("Company"), info->workcompany);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5098 oscar_string_append(str, "\n<br>", _("Division"), info->workdivision);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5099 oscar_string_append(str, "\n<br>", _("Position"), info->workposition);
7108
82655fa54acb [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
5100 if (info->workwebpage && info->workwebpage[0] && (utf8 = gaim_utf8_try_convert(info->workwebpage))) {
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5101 g_string_append_printf(str, "\n<br><b>%s:</b> <a href=\"%s\">%s</a>", _("Web Page"), utf8, utf8);
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5102 g_free(utf8);
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5103 }
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5104 g_string_append_printf(str, "\n<hr>\n");
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5105 }
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5106
9634
166f3ac40f4a [gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents: 9631
diff changeset
5107 if (buddy != NULL)
166f3ac40f4a [gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents: 9631
diff changeset
5108 alias = gaim_buddy_get_alias(buddy);
166f3ac40f4a [gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents: 9631
diff changeset
5109 else
166f3ac40f4a [gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents: 9631
diff changeset
5110 alias = who;
166f3ac40f4a [gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents: 9631
diff changeset
5111 primary = g_strdup_printf(_("ICQ Info for %s"), alias);
9810
fedd23e2134d [gaim-migrate @ 10681]
Mark Doliner <markdoliner@pidgin.im>
parents: 9809
diff changeset
5112 gaim_notify_userinfo(gc, who, NULL, primary, NULL, str->str, NULL, NULL);
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5113 g_free(primary);
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5114 g_string_free(str, TRUE);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5115
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
5116 return 1;
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
5117 }
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
5118
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5119 static int gaim_icqalias(aim_session_t *sess, aim_frame_t *fr, ...)
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5120 {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5121 GaimConnection *gc = sess->aux_data;
4820
1e869f00810b [gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents: 4819
diff changeset
5122 gchar who[16], *utf8;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
5123 GaimBuddy *b;
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5124 va_list ap;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5125 struct aim_icq_info *info;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5126
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5127 va_start(ap, fr);
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5128 info = va_arg(ap, struct aim_icq_info *);
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5129 va_end(ap);
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5130
7108
82655fa54acb [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
5131 if (info->uin && info->nick && info->nick[0] && (utf8 = gaim_utf8_try_convert(info->nick))) {
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
5132 g_snprintf(who, sizeof(who), "%u", info->uin);
4820
1e869f00810b [gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents: 4819
diff changeset
5133 serv_got_alias(gc, who, utf8);
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5134 if ((b = gaim_find_buddy(gc->account, who))) {
7693
1f736efbd12d [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
5135 gaim_blist_node_set_string((GaimBlistNode*)b, "servernick", utf8);
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5136 }
4820
1e869f00810b [gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents: 4819
diff changeset
5137 g_free(utf8);
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5138 }
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5139
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5140 return 1;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5141 }
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5142
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5143 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
5144 {
7032
a6587d42db0c [gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents: 7026
diff changeset
5145 GaimConnection *gc = sess->aux_data;
a6587d42db0c [gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents: 7026
diff changeset
5146 gchar *text;
a6587d42db0c [gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents: 7026
diff changeset
5147 va_list ap;
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5148 char *msg, *url;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5149 fu16_t wid, hei, delay;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5150
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5151 va_start(ap, fr);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5152 msg = va_arg(ap, char *);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5153 url = va_arg(ap, char *);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5154 wid = (fu16_t) va_arg(ap, int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5155 hei = (fu16_t) va_arg(ap, int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5156 delay = (fu16_t) va_arg(ap, int);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5157 va_end(ap);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5158
7032
a6587d42db0c [gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents: 7026
diff changeset
5159 text = g_strdup_printf("%s<br><a href=\"%s\">%s</a>", msg, url, url);
a6587d42db0c [gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents: 7026
diff changeset
5160 gaim_notify_formatted(gc, NULL, _("Pop-Up Message"), NULL, text, NULL, NULL);
a6587d42db0c [gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents: 7026
diff changeset
5161 g_free(text);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5162
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5163 return 1;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5164 }
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5165
7032
a6587d42db0c [gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents: 7026
diff changeset
5166 static int gaim_parse_searchreply(aim_session_t *sess, aim_frame_t *fr, ...)
a6587d42db0c [gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents: 7026
diff changeset
5167 {
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5168 GaimConnection *gc = sess->aux_data;
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5169 gchar *secondary;
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5170 GString *text;
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5171 int i, num;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5172 va_list ap;
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5173 char *email, *SNs;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5174
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5175 va_start(ap, fr);
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5176 email = va_arg(ap, char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5177 num = va_arg(ap, int);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5178 SNs = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5179 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5180
8152
f26c9406b4b3 [gaim-migrate @ 8864]
Mark Doliner <markdoliner@pidgin.im>
parents: 8151
diff changeset
5181 secondary = g_strdup_printf(_("The following screen names are associated with %s"), email);
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5182 text = g_string_new("");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5183 for (i = 0; i < num; i++)
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5184 g_string_append_printf(text, "%s<br>", &SNs[i * (MAXSNLEN + 1)]);
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5185 gaim_notify_formatted(gc, NULL, _("Search Results"), secondary, text->str, NULL, NULL);
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5186
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5187 g_free(secondary);
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5188 g_string_free(text, TRUE);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5189
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5190 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5191 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5192
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5193 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
5194 va_list ap;
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5195 char *email;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
5196 char *buf;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5197
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5198 va_start(ap, fr);
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5199 email = va_arg(ap, char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5200 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5201
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5202 buf = g_strdup_printf(_("No results found for email address %s"), email);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5203 gaim_notify_error(sess->aux_data, NULL, buf, NULL);
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
5204 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5205
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5206 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5207 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5208
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5209 static int gaim_account_confirm(aim_session_t *sess, aim_frame_t *fr, ...) {
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5210 GaimConnection *gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5211 fu16_t status;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5212 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5213 char msg[256];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5214
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5215 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5216 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
5217 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5218
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5219 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5220 "account confirmation returned status 0x%04x (%s)\n", status,
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5221 status ? "unknown" : "email sent");
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5222 if (!status) {
5302
48db3c9dc259 [gaim-migrate @ 5674]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5301
diff changeset
5223 g_snprintf(msg, sizeof(msg), _("You should receive an email asking to confirm %s."),
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5224 gaim_account_get_username(gaim_connection_get_account(gc)));
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5225 gaim_notify_info(gc, NULL, _("Account Confirmation Requested"), msg);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5226 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5227
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5228 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5229 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5230
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5231 static int gaim_info_change(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5232 GaimConnection *gc = sess->aux_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5233 va_list ap;
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5234 fu16_t perms, err;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5235 char *url, *sn, *email;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5236 int change;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5237
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5238 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5239 change = va_arg(ap, int);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5240 perms = (fu16_t) va_arg(ap, unsigned int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5241 err = (fu16_t) va_arg(ap, unsigned int);
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5242 url = va_arg(ap, char *);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5243 sn = va_arg(ap, char *);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5244 email = va_arg(ap, char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5245 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5246
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5247 gaim_debug_misc("oscar",
9626
0bf7f913c6ca [gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents: 9625
diff changeset
5248 "account info: because of %s, perms=0x%04x, err=0x%04x, url=%s, sn=%s, email=%s\n",
0bf7f913c6ca [gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents: 9625
diff changeset
5249 change ? "change" : "request", perms, err,
0bf7f913c6ca [gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents: 9625
diff changeset
5250 (url != NULL) ? url : "(null)",
0bf7f913c6ca [gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents: 9625
diff changeset
5251 (sn != NULL) ? sn : "(null)",
0bf7f913c6ca [gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents: 9625
diff changeset
5252 (email != NULL) ? email : "(null)");
0bf7f913c6ca [gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents: 9625
diff changeset
5253
0bf7f913c6ca [gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents: 9625
diff changeset
5254 if ((err > 0) && (url != NULL)) {
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5255 char *dialog_msg;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5256 char *dialog_top = g_strdup_printf(_("Error Changing Account Info"));
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5257 switch (err) {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5258 case 0x0001: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5259 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
5260 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5261 case 0x0006: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5262 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
5263 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5264 case 0x000b: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5265 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
5266 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5267 case 0x001d: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5268 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
5269 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5270 case 0x0021: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5271 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
5272 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5273 case 0x0023: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5274 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
5275 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5276 default: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5277 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unknown error."), err);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5278 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5279 }
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5280 gaim_notify_error(gc, NULL, dialog_top, dialog_msg);
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5281 g_free(dialog_top);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5282 g_free(dialog_msg);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5283 return 1;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5284 }
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5285
9626
0bf7f913c6ca [gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents: 9625
diff changeset
5286 if (sn != NULL) {
4585
cd29170cbc26 [gaim-migrate @ 4869]
Matthew Smith <matthew@smigs.co.uk>
parents: 4508
diff changeset
5287 char *dialog_msg = g_strdup_printf(_("Your screen name is currently formatted as follows:\n%s"), sn);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5288 gaim_notify_info(gc, NULL, _("Account Info"), dialog_msg);
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5289 g_free(dialog_msg);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5290 }
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5291
9626
0bf7f913c6ca [gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents: 9625
diff changeset
5292 if (email != NULL) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5293 char *dialog_msg = g_strdup_printf(_("The email address for %s is %s"),
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5294 gaim_account_get_username(gaim_connection_get_account(gc)), email);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5295 gaim_notify_info(gc, NULL, _("Account Info"), dialog_msg);
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5296 g_free(dialog_msg);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5297 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5298
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5299 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5300 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5301
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5302 static void oscar_keepalive(GaimConnection *gc) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5303 OscarData *od = (OscarData *)gc->proto_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5304 aim_flap_nop(od->sess, od->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5305 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5306
6059
9934c862ca14 [gaim-migrate @ 6509]
John Silvestri <john.silvestri@gmail.com>
parents: 6053
diff changeset
5307 static int oscar_send_typing(GaimConnection *gc, const char *name, int typing) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5308 OscarData *od = (OscarData *)gc->proto_data;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
5309 struct oscar_direct_im *dim = oscar_direct_im_find(od, name);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
5310 if (dim && dim->connected)
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
5311 if (typing == GAIM_TYPING)
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5312 aim_odc_send_typing(od->sess, dim->conn, 0x0002);
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
5313 else if (typing == GAIM_TYPED)
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5314 aim_odc_send_typing(od->sess, dim->conn, 0x0001);
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5315 else
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5316 aim_odc_send_typing(od->sess, dim->conn, 0x0000);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
5317 else {
5300
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
5318 /* Don't send if this turkey is in our deny list */
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
5319 GSList *list;
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
5320 for (list=gc->account->deny; (list && aim_sncmp(name, list->data)); list=list->next);
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
5321 if (!list) {
7261
4be05820d441 [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
5322 struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(gc->account, name));
5300
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
5323 if (bi && bi->typingnot) {
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
5324 if (typing == GAIM_TYPING)
5300
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
5325 aim_im_sendmtn(od->sess, 0x0001, name, 0x0002);
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
5326 else if (typing == GAIM_TYPED)
5300
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
5327 aim_im_sendmtn(od->sess, 0x0001, name, 0x0001);
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
5328 else
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
5329 aim_im_sendmtn(od->sess, 0x0001, name, 0x0000);
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
5330 }
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
5331 }
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
5332 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5333 return 0;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5334 }
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
5335
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5336 static int gaim_odc_send_im(aim_session_t *, aim_conn_t *, const char *, GaimConvImFlags);
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5337
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5338 static int oscar_send_im(GaimConnection *gc, const char *name, const char *message, GaimConvImFlags imflags) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5339 OscarData *od = (OscarData *)gc->proto_data;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
5340 struct oscar_direct_im *dim = oscar_direct_im_find(od, name);
2303
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
5341 int ret = 0;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5342 const char *iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc));
8800
e9b59ded8f27 [gaim-migrate @ 9562]
Mark Doliner <markdoliner@pidgin.im>
parents: 8749
diff changeset
5343 char *tmpmsg = NULL, *tmpmsg2 = NULL;
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
5344
4838
653f06ff2acf [gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents: 4834
diff changeset
5345 if (dim && dim->connected) {
653f06ff2acf [gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents: 4834
diff changeset
5346 /* If we're directly connected, send a direct IM */
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6907
diff changeset
5347 ret = gaim_odc_send_im(od->sess, dim->conn, message, imflags);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5348 } else {
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5349 struct buddyinfo *bi;
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5350 struct aim_sendimext_args args;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5351 struct stat st;
6478
2c3fe7c8659b [gaim-migrate @ 6991]
Robert McQueen <robot101@debian.org>
parents: 6465
diff changeset
5352 gsize len;
8962
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5353 GaimConversation *conv = gaim_find_conversation_with_account(name, gaim_connection_get_account(gc));
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5354
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5355 if (strstr(message, "<IMG "))
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5356 gaim_conversation_write(conv, "",
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5357 _("Your IM Image was not sent. "
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5358 "You must be Direct Connected to send IM Images."),
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5359 GAIM_MESSAGE_ERROR, time(NULL));
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5360
7261
4be05820d441 [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
5361 bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(gc->account, name));
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5362 if (!bi) {
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5363 bi = g_new0(struct buddyinfo, 1);
7261
4be05820d441 [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
5364 g_hash_table_insert(od->buddyinfo, g_strdup(gaim_normalize(gc->account, name)), bi);
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5365 }
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5366
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5367 args.flags = AIM_IMFLAGS_ACK | AIM_IMFLAGS_CUSTOMFEATURES;
4665
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
5368 if (od->icq) {
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
5369 args.features = features_icq;
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
5370 args.featureslen = sizeof(features_icq);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5371 args.flags |= AIM_IMFLAGS_OFFLINE;
4665
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
5372 } else {
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
5373 args.features = features_aim;
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
5374 args.featureslen = sizeof(features_aim);
4972
3dd342b21444 [gaim-migrate @ 5306]
Mark Doliner <markdoliner@pidgin.im>
parents: 4969
diff changeset
5375
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5376 if (imflags & GAIM_CONV_IM_AUTO_RESP)
4972
3dd342b21444 [gaim-migrate @ 5306]
Mark Doliner <markdoliner@pidgin.im>
parents: 4969
diff changeset
5377 args.flags |= AIM_IMFLAGS_AWAY;
4665
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
5378 }
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5379
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5380 if (bi->ico_need) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5381 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5382 "Sending buddy icon request with message\n");
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5383 args.flags |= AIM_IMFLAGS_BUDDYREQ;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5384 bi->ico_need = FALSE;
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5385 }
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5386
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5387 if (iconfile && !stat(iconfile, &st)) {
8361
5418fa8917c4 [gaim-migrate @ 9086]
Mark Doliner <markdoliner@pidgin.im>
parents: 8359
diff changeset
5388 FILE *file = fopen(iconfile, "rb");
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5389 if (file) {
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5390 char *buf = g_malloc(st.st_size);
9532
32470c5a1d58 [gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 9481
diff changeset
5391 /* XXX - Use g_file_get_contents()? */
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5392 fread(buf, 1, st.st_size, file);
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
5393 fclose(file);
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5394
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5395 args.iconlen = st.st_size;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5396 args.iconsum = aimutil_iconsum(buf, st.st_size);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5397 args.iconstamp = st.st_mtime;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5398
7406
b0e59cabc315 [gaim-migrate @ 8006]
Sean Egan <seanegan@pidgin.im>
parents: 7389
diff changeset
5399 if ((args.iconlen != bi->ico_me_len) || (args.iconsum != bi->ico_me_csum) || (args.iconstamp != bi->ico_me_time)) {
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5400 bi->ico_informed = FALSE;
7406
b0e59cabc315 [gaim-migrate @ 8006]
Sean Egan <seanegan@pidgin.im>
parents: 7389
diff changeset
5401 bi->ico_sent = FALSE;
b0e59cabc315 [gaim-migrate @ 8006]
Sean Egan <seanegan@pidgin.im>
parents: 7389
diff changeset
5402 }
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5403
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5404 if (!bi->ico_informed) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5405 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5406 "Claiming to have a buddy icon\n");
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5407 args.flags |= AIM_IMFLAGS_HASICON;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5408 bi->ico_me_len = args.iconlen;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5409 bi->ico_me_csum = args.iconsum;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5410 bi->ico_me_time = args.iconstamp;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5411 bi->ico_informed = TRUE;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5412 }
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5413
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5414 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5415 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5416 }
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5417
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5418 args.destsn = name;
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5419
8985
5045635e6d86 [gaim-migrate @ 9760]
Mark Doliner <markdoliner@pidgin.im>
parents: 8984
diff changeset
5420 /*
5045635e6d86 [gaim-migrate @ 9760]
Mark Doliner <markdoliner@pidgin.im>
parents: 8984
diff changeset
5421 * If we're IMing an ICQ user then send newlines as CR/LF and
5045635e6d86 [gaim-migrate @ 9760]
Mark Doliner <markdoliner@pidgin.im>
parents: 8984
diff changeset
5422 * strip all HTML
5045635e6d86 [gaim-migrate @ 9760]
Mark Doliner <markdoliner@pidgin.im>
parents: 8984
diff changeset
5423 */
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
5424 if (aim_sn_is_icq(name) ) {
8995
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5425 /* being sent to an ICQ user */
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
5426 if (!aim_sn_is_icq(gaim_account_get_username(gc->account))) {
8995
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5427 /* from an AIM user - ICQ receiving from AIM *expects the messsage to be HTML formatted* */
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5428 tmpmsg = gaim_str_add_cr(message);
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5429 } else {
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5430 /* from an ICQ user - do nothing */
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5431 tmpmsg = g_strdup(message);
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5432 }
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5433 } else {
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5434 /* being sent to an AIM user */
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
5435 if (aim_sn_is_icq(gaim_account_get_username(gc->account))) {
8995
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5436 /* from an ICQ user */
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5437 tmpmsg2 = gaim_strdup_withhtml(message);
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5438 tmpmsg = gaim_escape_html(tmpmsg2);
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5439 g_free(tmpmsg2);
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5440 } else
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5441 tmpmsg = gaim_strdup_withhtml(message);
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5442 }
6310
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
5443 len = strlen(tmpmsg);
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
5444
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
5445 gaim_plugin_oscar_convert_to_best_encoding(gc, name, tmpmsg, (char **)&args.msg, &args.msglen, &args.charset, &args.charsubset);
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
5446 gaim_debug_info("oscar", "Sending IM, charset=0x%04hx, charsubset=0x%04hx, length=%d\n",
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
5447 args.charset, args.charsubset, args.msglen);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5448 ret = aim_im_sendch1_ext(od->sess, &args);
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
5449 g_free((char *)args.msg);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5450 }
4838
653f06ff2acf [gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents: 4834
diff changeset
5451
6310
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
5452 g_free(tmpmsg);
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
5453
2303
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
5454 if (ret >= 0)
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
5455 return 1;
6310
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
5456
2303
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
5457 return ret;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5458 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5459
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
5460 static void oscar_get_info(GaimConnection *gc, const char *name) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5461 OscarData *od = (OscarData *)gc->proto_data;
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
5462
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
5463 if (od->icq && aim_sn_is_icq(name))
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5464 aim_icq_getallinfo(od->sess, name);
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
5465 else
7235
7cec09c2efe4 [gaim-migrate @ 7810]
Daniel Westermann-Clark
parents: 7173
diff changeset
5466 aim_locate_getinfoshort(od->sess, name, 0x00000003);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
5467 }
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
5468
8950
1b90ece5fb4f [gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents: 8907
diff changeset
5469 #if 0
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
5470 static void oscar_set_dir(GaimConnection *gc, const char *first, const char *middle, const char *last,
3466
db8d35ad8480 [gaim-migrate @ 3516]
Sean Egan <seanegan@pidgin.im>
parents: 3458
diff changeset
5471 const char *maiden, const char *city, const char *state, const char *country, int web) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5472 /* XXX - some of these things are wrong, but i'm lazy */
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5473 OscarData *od = (OscarData *)gc->proto_data;
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
5474 aim_locate_setdirinfo(od->sess, first, middle, last,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5475 maiden, NULL, NULL, city, state, NULL, 0, web);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5476 }
8950
1b90ece5fb4f [gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents: 8907
diff changeset
5477 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5478
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5479 static void oscar_set_idle(GaimConnection *gc, int time) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5480 OscarData *od = (OscarData *)gc->proto_data;
7474
757569d68123 [gaim-migrate @ 8087]
Mark Doliner <markdoliner@pidgin.im>
parents: 7465
diff changeset
5481 aim_srv_setidle(od->sess, time);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5482 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5483
5954
58e43cf2dc1f [gaim-migrate @ 6398]
Mark Doliner <markdoliner@pidgin.im>
parents: 5948
diff changeset
5484 static void oscar_set_info(GaimConnection *gc, const char *text) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5485 OscarData *od = (OscarData *)gc->proto_data;
9807
ff713acc7204 [gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents: 9806
diff changeset
5486 int charset = 0;
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
5487 char *text_html = NULL;
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
5488 char *msg = NULL;
6478
2c3fe7c8659b [gaim-migrate @ 6991]
Robert McQueen <robot101@debian.org>
parents: 6465
diff changeset
5489 gsize msglen = 0;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5490
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5491 if (od->rights.maxsiglen == 0)
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5492 gaim_notify_warning(gc, NULL, _("Unable to set AIM profile."),
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5493 _("You have probably requested to set your "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5494 "profile before the login procedure completed. "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5495 "Your profile remains unset; try setting it "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5496 "again when you are fully connected."));
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5497
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5498 if (!text) {
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5499 aim_locate_setprofile(od->sess, NULL, "", 0, NULL, NULL, 0);
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5500 return;
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5501 }
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
5502
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5503 text_html = gaim_strdup_withhtml(text);
9807
ff713acc7204 [gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents: 9806
diff changeset
5504 charset = oscar_charset_check(text_html);
9826
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
5505 if (charset == AIM_CHARSET_UNICODE) {
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5506 msg = g_convert(text_html, strlen(text_html), "UCS-2BE", "UTF-8", NULL, &msglen, NULL);
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5507 aim_locate_setprofile(od->sess, "unicode-2-0", msg, (msglen > od->rights.maxsiglen ? od->rights.maxsiglen : msglen), NULL, NULL, 0);
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5508 g_free(msg);
9826
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
5509 } else if (charset == AIM_CHARSET_CUSTOM) {
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5510 msg = g_convert(text_html, strlen(text_html), "ISO-8859-1", "UTF-8", NULL, &msglen, NULL);
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5511 aim_locate_setprofile(od->sess, "iso-8859-1", msg, (msglen > od->rights.maxsiglen ? od->rights.maxsiglen : msglen), NULL, NULL, 0);
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5512 g_free(msg);
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5513 } else {
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5514 msglen = strlen(text_html);
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5515 aim_locate_setprofile(od->sess, "us-ascii", text_html, (msglen > od->rights.maxsiglen ? od->rights.maxsiglen : msglen), NULL, NULL, 0);
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5516 }
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5517
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5518 if (msglen > od->rights.maxsiglen) {
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5519 gchar *errstr;
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5520 errstr = g_strdup_printf(ngettext("The maximum profile length of %d byte "
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5521 "has been exceeded. Gaim has truncated it for you.",
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5522 "The maximum profile length of %d bytes "
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5523 "has been exceeded. Gaim has truncated it for you.",
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5524 od->rights.maxsiglen), od->rights.maxsiglen);
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5525 gaim_notify_warning(gc, NULL, _("Profile too long."), errstr);
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5526 g_free(errstr);
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5527 }
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5528
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5529 g_free(text_html);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5530
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5531 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5532 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5533
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5534 static void
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5535 oscar_set_status_aim(GaimAccount *account, GaimStatus *status)
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5536 {
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5537 GaimConnection *gc = gaim_account_get_connection(account);
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5538 OscarData *od = (OscarData *)gc->proto_data;
9992
d733f96bfc7b [gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents: 9991
diff changeset
5539 GaimStatusType *status_type;
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5540 GaimStatusPrimitive primitive;
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5541 GaimPresence *presence;
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5542 const gchar *status_id;
9807
ff713acc7204 [gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents: 9806
diff changeset
5543 int charset = 0;
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
5544 gchar *text_html = NULL;
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
5545 char *msg = NULL;
6478
2c3fe7c8659b [gaim-migrate @ 6991]
Robert McQueen <robot101@debian.org>
parents: 6465
diff changeset
5546 gsize msglen = 0;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5547
9992
d733f96bfc7b [gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents: 9991
diff changeset
5548 status_type = gaim_status_get_type(status);
d733f96bfc7b [gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents: 9991
diff changeset
5549 primitive = gaim_status_type_get_primitive(status_type);
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5550 status_id = gaim_status_get_id(status);
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5551 presence = gaim_account_get_presence(account);
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5552
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5553 if (primitive == GAIM_STATUS_HIDDEN)
8257
49f32fa28ca7 [gaim-migrate @ 8980]
Mark Doliner <markdoliner@pidgin.im>
parents: 8250
diff changeset
5554 aim_setextstatus(od->sess, AIM_ICQ_STATE_INVISIBLE);
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5555 else
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5556 aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL);
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5557
8476
45ab15a421d8 [gaim-migrate @ 9209]
Mark Doliner <markdoliner@pidgin.im>
parents: 8461
diff changeset
5558
8257
49f32fa28ca7 [gaim-migrate @ 8980]
Mark Doliner <markdoliner@pidgin.im>
parents: 8250
diff changeset
5559 aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL);
49f32fa28ca7 [gaim-migrate @ 8980]
Mark Doliner <markdoliner@pidgin.im>
parents: 8250
diff changeset
5560
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5561 if (od->rights.maxawaymsglen == 0)
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5562 gaim_notify_warning(gc, NULL, _("Unable to set AIM away message."),
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5563 _("You have probably requested to set your "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5564 "away message before the login procedure "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5565 "completed. You remain in a \"present\" "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5566 "state; try setting it again when you are "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5567 "fully connected."));
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
5568
9992
d733f96bfc7b [gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents: 9991
diff changeset
5569 if (primitive == GAIM_STATUS_AVAILABLE) {
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5570 aim_locate_setprofile(od->sess, NULL, NULL, 0, NULL, "", 0);
9995
df30c5175fd7 [gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents: 9992
diff changeset
5571 #if 0
df30c5175fd7 [gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents: 9992
diff changeset
5572 /* Set an available message */
df30c5175fd7 [gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents: 9992
diff changeset
5573 aim_locate_setprofile(od->sess, NULL, NULL, 0, NULL, "", 0);
df30c5175fd7 [gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents: 9992
diff changeset
5574 aim_srv_setavailmsg(od->sess, text);
df30c5175fd7 [gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents: 9992
diff changeset
5575 #endif
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
5576 return;
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
5577 }
9995
df30c5175fd7 [gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents: 9992
diff changeset
5578
df30c5175fd7 [gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents: 9992
diff changeset
5579 /*
df30c5175fd7 [gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents: 9992
diff changeset
5580 * XXX - Using status_id below is definitely wrong. We want to get
df30c5175fd7 [gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents: 9992
diff changeset
5581 * the away message that the Gaim user just set. We probably want
df30c5175fd7 [gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents: 9992
diff changeset
5582 * to get a certain attribute from status->attr_values, but I don't
df30c5175fd7 [gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents: 9992
diff changeset
5583 * think any of that is implemented yet.
df30c5175fd7 [gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents: 9992
diff changeset
5584 *
df30c5175fd7 [gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents: 9992
diff changeset
5585 * Something like
df30c5175fd7 [gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents: 9992
diff changeset
5586 * text_html = gaim_status_get_attr_string(status, "message");
df30c5175fd7 [gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents: 9992
diff changeset
5587 */
df30c5175fd7 [gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents: 9992
diff changeset
5588 status_id = gaim_status_get_name(status);
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5589 text_html = gaim_strdup_withhtml(status_id);
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5590
9807
ff713acc7204 [gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents: 9806
diff changeset
5591 charset = oscar_charset_check(text_html);
9826
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
5592 if (charset == AIM_CHARSET_UNICODE) {
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
5593 msg = g_convert(text_html, strlen(text_html), "UCS-2BE", "UTF-8", NULL, &msglen, NULL);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
5594 aim_locate_setprofile(od->sess, NULL, NULL, 0, "unicode-2-0", msg,
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5595 (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen));
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
5596 g_free(msg);
9826
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
5597 } else if (charset == AIM_CHARSET_CUSTOM) {
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
5598 msg = g_convert(text_html, strlen(text_html), "ISO-8859-1", "UTF-8", NULL, &msglen, NULL);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
5599 aim_locate_setprofile(od->sess, NULL, NULL, 0, "iso-8859-1", msg,
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5600 (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen));
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
5601 g_free(msg);
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
5602 } else {
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
5603 msglen = strlen(text_html);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
5604 aim_locate_setprofile(od->sess, NULL, NULL, 0, "us-ascii", text_html,
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5605 (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen));
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
5606 }
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
5607
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
5608 if (msglen > od->rights.maxawaymsglen) {
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5609 gchar *errstr;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5610
6308
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 6302
diff changeset
5611 errstr = g_strdup_printf(ngettext("The maximum away message length of %d byte "
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 6302
diff changeset
5612 "has been exceeded. Gaim has truncated it for you.",
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 6302
diff changeset
5613 "The maximum away message length of %d bytes "
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 6302
diff changeset
5614 "has been exceeded. Gaim has truncated it for you.",
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 6302
diff changeset
5615 od->rights.maxawaymsglen), od->rights.maxawaymsglen);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5616 gaim_notify_warning(gc, NULL, _("Away message too long."), errstr);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5617 g_free(errstr);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5618 }
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
5619
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
5620 g_free(text_html);
8257
49f32fa28ca7 [gaim-migrate @ 8980]
Mark Doliner <markdoliner@pidgin.im>
parents: 8250
diff changeset
5621
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5622 return;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5623 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5624
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5625 static void
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5626 oscar_set_status_icq(GaimAccount *account, GaimStatus *status)
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5627 {
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5628 GaimConnection *gc = gaim_account_get_connection(account);
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5629 OscarData *od = (OscarData *)gc->proto_data;
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5630 const gchar *status_id = gaim_status_get_id(status);
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5631
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5632 if (gaim_status_type_get_primitive(gaim_status_get_type(status)) == GAIM_STATUS_HIDDEN)
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5633 account->perm_deny = 4;
8265
ff840ad070be [gaim-migrate @ 8988]
Mark Doliner <markdoliner@pidgin.im>
parents: 8257
diff changeset
5634 else
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5635 account->perm_deny = 3;
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5636
8265
ff840ad070be [gaim-migrate @ 8988]
Mark Doliner <markdoliner@pidgin.im>
parents: 8257
diff changeset
5637 if ((od->sess->ssi.received_data) && (aim_ssi_getpermdeny(od->sess->ssi.local) != account->perm_deny))
ff840ad070be [gaim-migrate @ 8988]
Mark Doliner <markdoliner@pidgin.im>
parents: 8257
diff changeset
5638 aim_ssi_setpermdeny(od->sess, account->perm_deny, 0xffffffff);
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
5639
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5640 if (!strcmp(status_id, OSCAR_STATUS_ID_ONLINE))
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
5641 aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL);
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5642
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5643 else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY))
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
5644 aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY);
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5645
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5646 else if (!strcmp(status_id, OSCAR_STATUS_ID_DND))
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
5647 aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_DND | AIM_ICQ_STATE_BUSY);
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5648
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5649 else if (!strcmp(status_id, OSCAR_STATUS_ID_NA))
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
5650 aim_setextstatus(od->sess, AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY);
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5651
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5652 else if (!strcmp(status_id, OSCAR_STATUS_ID_OCCUPIED))
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
5653 aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_BUSY);
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5654
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5655 else if (!strcmp(status_id, OSCAR_STATUS_ID_FREE4CHAT))
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
5656 aim_setextstatus(od->sess, AIM_ICQ_STATE_CHAT);
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5657
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5658 else if (!strcmp(status_id, OSCAR_STATUS_ID_INVISIBLE))
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
5659 aim_setextstatus(od->sess, AIM_ICQ_STATE_INVISIBLE);
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5660
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5661 else if (!strcmp(status_id, OSCAR_STATUS_ID_CUSTOM))
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5662 aim_setextstatus(od->sess, AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5663
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5664 return;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5665 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5666
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5667 static void
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5668 oscar_set_status(GaimAccount *account, GaimStatus *status)
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5669 {
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5670 GaimConnection *gc = gaim_account_get_connection(account);
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5671 OscarData *od = (OscarData *)gc->proto_data;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5672
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5673 if (od->icq)
9988
f58c80ea22ee [gaim-migrate @ 10901]
Gary Kramlich <grim@pidgin.im>
parents: 9982
diff changeset
5674 oscar_set_status_icq(account, status);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5675 else
9988
f58c80ea22ee [gaim-migrate @ 10901]
Gary Kramlich <grim@pidgin.im>
parents: 9982
diff changeset
5676 oscar_set_status_aim(account, status);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5677
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5678 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5679 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5680
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5681 static void
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5682 oscar_warn(GaimConnection *gc, const char *name, gboolean anonymous) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5683 OscarData *od = (OscarData *)gc->proto_data;
9753
5951fd24250e [gaim-migrate @ 10620]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
5684 aim_im_warn(od->sess, od->conn, name, anonymous ? AIM_WARN_ANON : 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5685 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5686
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5687 static void oscar_add_buddy(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5688 OscarData *od = (OscarData *)gc->proto_data;
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5689
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5690 if (!aim_snvalid(buddy->name)) {
8092
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 8077
diff changeset
5691 gchar *buf;
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5692 buf = g_strdup_printf(_("Could not add the buddy %s because the screen name is invalid. Screen names must either start with a letter and contain only letters, numbers and spaces, or contain only numbers."), buddy->name);
9627
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
5693 if (!gaim_conv_present_error(buddy->name, gaim_connection_get_account(gc), buf))
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
5694 gaim_notify_error(gc, NULL, _("Unable To Add"), buf);
8092
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 8077
diff changeset
5695 g_free(buf);
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5696
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5697 /* Remove from local list */
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5698 gaim_blist_remove_buddy(buddy);
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5699
8092
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 8077
diff changeset
5700 return;
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 8077
diff changeset
5701 }
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 8077
diff changeset
5702
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5703 #ifdef NOSSI
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5704 aim_buddylist_addbuddy(od->sess, od->conn, buddy->name);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5705 #else
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5706 if ((od->sess->ssi.received_data) && !(aim_ssi_itemlist_finditem(od->sess->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))) {
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5707 if (buddy && group) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5708 gaim_debug_info("oscar",
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5709 "ssi: adding buddy %s to group %s\n", buddy->name, group->name);
9620
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
5710 aim_ssi_addbuddy(od->sess, buddy->name, group->name, gaim_buddy_get_alias_only(buddy), NULL, NULL, 0);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5711 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5712 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5713 #endif
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5714
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5715 if (od->icq)
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5716 aim_icq_getalias(od->sess, buddy->name);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5717 }
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5718
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5719 static void oscar_add_buddies(GaimConnection *gc, GList *buddies, GList *groups) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5720 OscarData *od = (OscarData *)gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5721 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5722 char buf[MSG_LEN];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5723 int n=0;
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5724
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5725 while (buddies) {
9381
a075315bedbf [gaim-migrate @ 10189]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9318
diff changeset
5726 GaimBuddy *buddy = buddies->data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5727 if (n > MSG_LEN - 18) {
7285
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
5728 aim_buddylist_set(od->sess, od->conn, buf);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5729 n = 0;
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
5730 }
9381
a075315bedbf [gaim-migrate @ 10189]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9318
diff changeset
5731 n += g_snprintf(buf + n, sizeof(buf) - n, "%s&", buddy->name);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5732 buddies = buddies->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5733 }
7285
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
5734 aim_buddylist_set(od->sess, od->conn, buf);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5735 #else
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5736
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5737 if (od->sess->ssi.received_data) {
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5738 GList *curb = buddies;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5739 GList *curg = groups;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5740 while ((curb != NULL) && (curg != NULL)) {
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5741 GaimBuddy *buddy = curb->data;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5742 GaimGroup *group = curg->data;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5743 oscar_add_buddy(gc, buddy, group);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5744 curb = curb->next;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5745 curg = curg->next;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5746 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5747 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5748 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5749 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5750
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5751 static void oscar_remove_buddy(GaimConnection *gc, GaimBuddy *buddy, GaimGroup *group) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5752 OscarData *od = (OscarData *)gc->proto_data;
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5753
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5754 #ifdef NOSSI
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5755 aim_buddylist_removebuddy(od->sess, od->conn, buddy->name);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5756 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5757 if (od->sess->ssi.received_data) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5758 gaim_debug_info("oscar",
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5759 "ssi: deleting buddy %s from group %s\n", buddy->name, group->name);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5760 aim_ssi_delbuddy(od->sess, buddy->name, group->name);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5761 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5762 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5763 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5764
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5765 static void oscar_remove_buddies(GaimConnection *gc, GList *buddies, GList *groups) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5766 OscarData *od = (OscarData *)gc->proto_data;
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5767
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5768 #ifdef NOSSI
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5769 for (cur = buddies; cur != NULL; cur = cur->next) {
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5770 GaimBuddy *buddy = cur->data;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5771 aim_buddylist_removebuddy(od->sess, od->conn, buddy->name);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5772 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5773 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5774 if (od->sess->ssi.received_data) {
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5775 GList *curb = buddies;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5776 GList *curg = groups;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5777 while ((curb != NULL) && (curg != NULL)) {
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5778 GaimBuddy *buddy = curb->data;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5779 GaimGroup *group = curg->data;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5780 oscar_remove_buddy(gc, buddy, group);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5781 curb = curb->next;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5782 curg = curg->next;
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
5783 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5784 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5785 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5786 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5787
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5788 #ifndef NOSSI
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5789 static void oscar_move_buddy(GaimConnection *gc, const char *name, const char *old_group, const char *new_group) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5790 OscarData *od = (OscarData *)gc->proto_data;
4303
121490448a58 [gaim-migrate @ 4557]
Mark Doliner <markdoliner@pidgin.im>
parents: 4299
diff changeset
5791 if (od->sess->ssi.received_data && strcmp(old_group, new_group)) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5792 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5793 "ssi: moving buddy %s from group %s to group %s\n", name, old_group, new_group);
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
5794 aim_ssi_movebuddy(od->sess, old_group, new_group, name);
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5795 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5796 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5797
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5798 static void oscar_alias_buddy(GaimConnection *gc, const char *name, const char *alias) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5799 OscarData *od = (OscarData *)gc->proto_data;
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5800 if (od->sess->ssi.received_data) {
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5801 char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, name);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5802 if (gname) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5803 gaim_debug_info("oscar",
9586
cb4e6ae1f4b1 [gaim-migrate @ 10429]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9554
diff changeset
5804 "ssi: changing the alias for buddy %s to %s\n", name, alias ? alias : "(none)");
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
5805 aim_ssi_aliasbuddy(od->sess, gname, name, alias);
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5806 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5807 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5808 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5809
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5810 static void oscar_rename_group(GaimConnection *gc, const char *old_name, GaimGroup *group, GList *moved_buddies) {
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
5811 OscarData *od = (OscarData *)gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5812
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5813 if (od->sess->ssi.received_data) {
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5814 if (aim_ssi_itemlist_finditem(od->sess->ssi.local, group->name, NULL, AIM_SSI_TYPE_GROUP)) {
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5815 GList *cur, *groups = NULL;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5816
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5817 /* Make a list of what the groups each buddy is in */
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5818 for (cur = moved_buddies; cur != NULL; cur = cur->next) {
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5819 GaimBlistNode *node = cur->data;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5820 groups = g_list_append(groups, node->parent);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5821 }
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5822
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5823 oscar_remove_buddies(gc, moved_buddies, groups);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5824 oscar_add_buddies(gc, moved_buddies, groups);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5825 g_list_free(groups);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5826 gaim_debug_info("oscar",
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5827 "ssi: moved all buddies from group %s to %s\n", old_name, group->name);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5828 } else {
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5829 aim_ssi_rename_group(od->sess, old_name, group->name);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5830 gaim_debug_info("oscar",
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5831 "ssi: renamed group %s to %s\n", old_name, group->name);
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
5832 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
5833 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
5834 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
5835
5968
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
5836 static gboolean gaim_ssi_rerequestdata(gpointer data) {
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
5837 aim_session_t *sess = data;
6350
22dfc953f2fb [gaim-migrate @ 6849]
Ethan Blanton <elb@pidgin.im>
parents: 6318
diff changeset
5838 aim_ssi_reqdata(sess);
5968
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
5839 return FALSE;
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
5840 }
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
5841
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5842 static int gaim_ssi_parseerr(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5843 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5844 OscarData *od = gc->proto_data;
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5845 va_list ap;
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5846 fu16_t reason;
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5847
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5848 va_start(ap, fr);
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5849 reason = (fu16_t)va_arg(ap, unsigned int);
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5850 va_end(ap);
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5851
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5852 gaim_debug_error("oscar", "ssi: SNAC error %hu\n", reason);
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5853
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5854 if (reason == 0x0005) {
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5855 gaim_notify_error(gc, NULL, _("Unable To Retrieve Buddy List"),
5828
3f919804eb88 [gaim-migrate @ 6259]
Nathan Walp <nwalp@pidgin.im>
parents: 5685
diff changeset
5856 _("Gaim was temporarily unable to retrieve your buddy list from the AIM servers. Your buddy list is not lost, and will probably become available in a few hours."));
8273
7882af5843e9 [gaim-migrate @ 8997]
Scott Lamb
parents: 8266
diff changeset
5857 od->getblisttimer = gaim_timeout_add(300000, gaim_ssi_rerequestdata, od->sess);
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5858 }
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5859
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5860 /* Activate SSI */
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5861 /* Sending the enable causes other people to be able to see you, and you to see them */
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5862 /* Make sure your privacy setting/invisibility is set how you want it before this! */
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5863 gaim_debug_info("oscar", "ssi: activating server-stored buddy list\n");
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5864 aim_ssi_enable(od->sess);
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5865
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5866 return 1;
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5867 }
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5868
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5869 static int gaim_ssi_parserights(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5870 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5871 OscarData *od = (OscarData *)gc->proto_data;
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
5872 int i;
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
5873 va_list ap;
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
5874 int numtypes;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5875 fu16_t *maxitems;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5876
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5877 va_start(ap, fr);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5878 numtypes = va_arg(ap, int);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5879 maxitems = va_arg(ap, fu16_t *);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5880 va_end(ap);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5881
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5882 gaim_debug_misc("oscar", "ssi rights:");
5211
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
5883
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5884 for (i=0; i<numtypes; i++)
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5885 gaim_debug_misc(NULL, " max type 0x%04x=%hd,",
5211
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
5886 i, maxitems[i]);
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
5887
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5888 gaim_debug_misc(NULL, "\n");
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5889
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5890 if (numtypes >= 0)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5891 od->rights.maxbuddies = maxitems[0];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5892 if (numtypes >= 1)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5893 od->rights.maxgroups = maxitems[1];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5894 if (numtypes >= 2)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5895 od->rights.maxpermits = maxitems[2];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5896 if (numtypes >= 3)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5897 od->rights.maxdenies = maxitems[3];
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5898
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5899 return 1;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5900 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5901
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5902 static int gaim_ssi_parselist(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5903 GaimConnection *gc = sess->aux_data;
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5904 GaimAccount *account = gaim_connection_get_account(gc);
9988
f58c80ea22ee [gaim-migrate @ 10901]
Gary Kramlich <grim@pidgin.im>
parents: 9982
diff changeset
5905 GaimStatus *status;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5906 OscarData *od = (OscarData *)gc->proto_data;
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5907 GaimGroup *g;
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5908 GaimBuddy *b;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
5909 struct aim_ssi_item *curitem;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5910 int tmp;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5911 va_list ap;
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
5912 fu16_t fmtver, numitems;
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
5913 struct aim_ssi_item *items;
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
5914 fu32_t timestamp;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5915
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5916 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5917 fmtver = (fu16_t)va_arg(ap, int);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5918 numitems = (fu16_t)va_arg(ap, int);
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
5919 items = va_arg(ap, struct aim_ssi_item *);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5920 timestamp = va_arg(ap, fu32_t);
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
5921 va_end(ap);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5922
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5923 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5924 "ssi: syncing local list and server list\n");
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5925
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
5926 if ((timestamp == 0) || (numitems == 0)) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5927 gaim_debug_info("oscar", "Got AIM SSI with a 0 timestamp or 0 numitems--not syncing. This probably means your buddy list is empty.", NULL);
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
5928 return 1;
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
5929 }
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
5930
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5931 /* Clean the buddy list */
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
5932 aim_ssi_cleanlist(sess);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5933
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5934 { /* If not in server list then prune from local list */
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5935 GaimBlistNode *gnode, *cnode, *bnode;
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5936 GaimBuddyList *blist;
9539
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
5937 GSList *cur, *next;
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5938
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5939 /* Buddies */
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5940 cur = NULL;
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5941 if ((blist = gaim_get_blist()) != NULL) {
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5942 for (gnode = blist->root; gnode; gnode = gnode->next) {
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5943 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5944 continue;
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5945 g = (GaimGroup *)gnode;
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5946 for (cnode = gnode->child; cnode; cnode = cnode->next) {
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5947 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode))
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5948 continue;
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5949 for (bnode = cnode->child; bnode; bnode = bnode->next) {
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5950 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5951 continue;
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5952 b = (GaimBuddy *)bnode;
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5953 if (b->account == gc->account) {
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5954 if (aim_ssi_itemlist_exists(sess->ssi.local, b->name)) {
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5955 /* If the buddy is an ICQ user then load his nickname */
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5956 const char *servernick = gaim_blist_node_get_string((GaimBlistNode*)b, "servernick");
8214
8ba5bacfa054 [gaim-migrate @ 8937]
Nathan Walp <nwalp@pidgin.im>
parents: 8175
diff changeset
5957 char *alias;
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5958 if (servernick)
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5959 serv_got_alias(gc, b->name, servernick);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5960
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5961 /* Store local alias on server */
8214
8ba5bacfa054 [gaim-migrate @ 8937]
Nathan Walp <nwalp@pidgin.im>
parents: 8175
diff changeset
5962 alias = aim_ssi_getalias(sess->ssi.local, g->name, b->name);
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5963 if (!alias && b->alias && strlen(b->alias))
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5964 aim_ssi_aliasbuddy(sess, g->name, b->name, b->alias);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5965 free(alias);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5966 } else {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5967 gaim_debug_info("oscar",
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5968 "ssi: removing buddy %s from local list\n", b->name);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5969 /* We can't actually remove now because it will screw up our looping */
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5970 cur = g_slist_prepend(cur, b);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5971 }
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5972 }
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5973 }
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5974 }
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5975 }
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5976 }
8175
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
5977
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5978 while (cur != NULL) {
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5979 b = cur->data;
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5980 cur = g_slist_remove(cur, b);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5981 gaim_blist_remove_buddy(b);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5982 }
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5983
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5984 /* Permit list */
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5985 if (gc->account->permit) {
9539
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
5986 next = gc->account->permit;
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
5987 while (next != NULL) {
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
5988 cur = next;
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
5989 next = next->next;
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5990 if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_PERMIT)) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5991 gaim_debug_info("oscar",
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5992 "ssi: removing permit %s from local list\n", (const char *)cur->data);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5993 gaim_privacy_permit_remove(account, cur->data, TRUE);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5994 }
9539
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
5995 }
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5996 }
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5997
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5998 /* Deny list */
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5999 if (gc->account->deny) {
9539
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
6000 next = gc->account->deny;
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
6001 while (next != NULL) {
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
6002 cur = next;
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
6003 next = next->next;
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6004 if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_DENY)) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6005 gaim_debug_info("oscar",
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6006 "ssi: removing deny %s from local list\n", (const char *)cur->data);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6007 gaim_privacy_deny_remove(account, cur->data, TRUE);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6008 }
9539
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
6009 }
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6010 }
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6011 /* Presence settings (idle time visibility) */
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6012 if ((tmp = aim_ssi_getpresence(sess->ssi.local)) != 0xFFFFFFFF)
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6013 if (!(tmp & 0x400))
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6014 aim_ssi_setpresence(sess, tmp | 0x400);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6015 } /* end pruning buddies from local list */
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6016
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6017 /* Add from server list to local list */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6018 for (curitem=sess->ssi.local; curitem; curitem=curitem->next) {
7328
978db7a49075 [gaim-migrate @ 7914]
Mark Doliner <markdoliner@pidgin.im>
parents: 7313
diff changeset
6019 if ((curitem->name == NULL) || (g_utf8_validate(curitem->name, -1, NULL)))
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6020 switch (curitem->type) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6021 case 0x0000: { /* Buddy */
4251
7d62db57d86a [gaim-migrate @ 4501]
Mark Doliner <markdoliner@pidgin.im>
parents: 4249
diff changeset
6022 if (curitem->name) {
4292
249d89e1b14c [gaim-migrate @ 4545]
Mark Doliner <markdoliner@pidgin.im>
parents: 4282
diff changeset
6023 char *gname = aim_ssi_itemlist_findparentname(sess->ssi.local, curitem->name);
7166
70825074f830 [gaim-migrate @ 7733]
Mark Doliner <markdoliner@pidgin.im>
parents: 7164
diff changeset
6024 char *gname_utf8 = gname ? gaim_utf8_try_convert(gname) : NULL;
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
6025 char *alias = aim_ssi_getalias(sess->ssi.local, gname, curitem->name);
7166
70825074f830 [gaim-migrate @ 7733]
Mark Doliner <markdoliner@pidgin.im>
parents: 7164
diff changeset
6026 char *alias_utf8 = alias ? gaim_utf8_try_convert(alias) : NULL;
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6027 b = gaim_find_buddy(gc->account, curitem->name);
4458
f4d2daa33ea5 [gaim-migrate @ 4733]
Trogdor
parents: 4452
diff changeset
6028 /* Should gname be freed here? -- elb */
4754
216cd548ad68 [gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents: 4744
diff changeset
6029 /* Not with the current code, but that might be cleaner -- med */
4458
f4d2daa33ea5 [gaim-migrate @ 4733]
Trogdor
parents: 4452
diff changeset
6030 free(alias);
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6031 if (b) {
4292
249d89e1b14c [gaim-migrate @ 4545]
Mark Doliner <markdoliner@pidgin.im>
parents: 4282
diff changeset
6032 /* Get server stored alias */
4705
cc6029a0379c [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
6033 if (alias_utf8) {
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6034 g_free(b->alias);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6035 b->alias = g_strdup(alias_utf8);
4705
cc6029a0379c [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
6036 }
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
6037 } else {
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6038 b = gaim_buddy_new(gc->account, curitem->name, alias_utf8);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
6039
4754
216cd548ad68 [gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents: 4744
diff changeset
6040 if (!(g = gaim_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6041 g = gaim_group_new(gname_utf8 ? gname_utf8 : _("Orphans"));
4754
216cd548ad68 [gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents: 4744
diff changeset
6042 gaim_blist_add_group(g, NULL);
216cd548ad68 [gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents: 4744
diff changeset
6043 }
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
6044
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6045 gaim_debug_info("oscar",
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
6046 "ssi: adding buddy %s to group %s to local list\n", curitem->name, gname_utf8 ? gname_utf8 : _("Orphans"));
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6047 gaim_blist_add_buddy(b, NULL, g, NULL);
4251
7d62db57d86a [gaim-migrate @ 4501]
Mark Doliner <markdoliner@pidgin.im>
parents: 4249
diff changeset
6048 }
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6049 if (!aim_sncmp(curitem->name, account->username)) {
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6050 char *comment = aim_ssi_getcomment(sess->ssi.local, gname, curitem->name);
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6051 gaim_check_comment(od, comment);
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6052 free(comment);
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6053 }
7162
dfd30c70acde [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
6054 g_free(gname_utf8);
dfd30c70acde [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
6055 g_free(alias_utf8);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6056 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6057 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6058
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6059 case 0x0001: { /* Group */
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
6060 /* Shouldn't add empty groups */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6061 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6062
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6063 case 0x0002: { /* Permit buddy */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6064 if (curitem->name) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6065 /* if (!find_permdeny_by_name(gc->permit, curitem->name)) { AAA */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6066 GSList *list;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6067 for (list=account->permit; (list && aim_sncmp(curitem->name, list->data)); list=list->next);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6068 if (!list) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6069 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6070 "ssi: adding permit buddy %s to local list\n", curitem->name);
6400
fc73d6446a5b [gaim-migrate @ 6905]
Christian Hammond <chipx86@chipx86.com>
parents: 6378
diff changeset
6071 gaim_privacy_permit_add(account, curitem->name, TRUE);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6072 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6073 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6074 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6075
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6076 case 0x0003: { /* Deny buddy */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6077 if (curitem->name) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6078 GSList *list;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6079 for (list=account->deny; (list && aim_sncmp(curitem->name, list->data)); list=list->next);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6080 if (!list) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6081 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6082 "ssi: adding deny buddy %s to local list\n", curitem->name);
6400
fc73d6446a5b [gaim-migrate @ 6905]
Christian Hammond <chipx86@chipx86.com>
parents: 6378
diff changeset
6083 gaim_privacy_deny_add(account, curitem->name, TRUE);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6084 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6085 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6086 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6087
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6088 case 0x0004: { /* Permit/deny setting */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6089 if (curitem->data) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6090 fu8_t permdeny;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6091 if ((permdeny = aim_ssi_getpermdeny(sess->ssi.local)) && (permdeny != account->perm_deny)) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6092 gaim_debug_info("oscar",
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6093 "ssi: changing permdeny from %d to %hhu\n", account->perm_deny, permdeny);
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6094 account->perm_deny = permdeny;
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6095 if (od->icq && account->perm_deny == 0x03) {
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6096 gaim_presence_switch_status(account->presence, OSCAR_STATUS_ID_INVISIBLE);
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
6097 }
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6098 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6099 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6100 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6101
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6102 case 0x0005: { /* Presence setting */
3109
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
6103 /* We don't want to change Gaim's setting because it applies to all accounts */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6104 } break;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6105 } /* End of switch on curitem->type */
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6106 } /* End of for loop */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6107
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6108 /*
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6109 * XXX - STATUS - Set our ICQ status. We probably don't want to do
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6110 * this. We probably want the SSI status setting to override the local
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6111 * setting.
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6112 */
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
6113 status = gaim_presence_get_active_status(account->presence);
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
6114 if (gaim_status_is_available(status))
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
6115 aim_setextstatus(sess, AIM_ICQ_STATE_NORMAL);
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
6116
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
6117 /* Activate SSI */
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
6118 /* Sending the enable causes other people to be able to see you, and you to see them */
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
6119 /* Make sure your privacy setting/invisibility is set how you want it before this! */
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6120 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6121 "ssi: activating server-stored buddy list\n");
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
6122 aim_ssi_enable(sess);
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
6123
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6124 return 1;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6125 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6126
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6127 static int gaim_ssi_parseack(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6128 GaimConnection *gc = sess->aux_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6129 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6130 struct aim_ssi_tmp *retval;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6131
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6132 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6133 retval = va_arg(ap, struct aim_ssi_tmp *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6134 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6135
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6136 while (retval) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6137 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6138 "ssi: status is 0x%04hx for a 0x%04hx action with name %s\n", retval->ack, retval->action, retval->item ? (retval->item->name ? retval->item->name : "no name") : "no item");
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6139
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6140 if (retval->ack != 0xffff)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6141 switch (retval->ack) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6142 case 0x0000: { /* added successfully */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6143 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6144
4829
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
6145 case 0x000c: { /* you are over the limit, the cheat is to the limit, come on fhqwhgads */
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
6146 gchar *buf;
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
6147 buf = g_strdup_printf(_("Could not add the buddy %s because you have too many buddies in your buddy list. Please remove one and try again."), (retval->name ? retval->name : _("(no name)")));
9758
bad4efbbfbf5 [gaim-migrate @ 10625]
Mark Doliner <markdoliner@pidgin.im>
parents: 9754
diff changeset
6148 if ((retval->name != NULL) && !gaim_conv_present_error(retval->name, gaim_connection_get_account(gc), buf))
9627
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
6149 gaim_notify_error(gc, NULL, _("Unable To Add"), buf);
4829
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
6150 g_free(buf);
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
6151 }
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
6152
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
6153 case 0x000e: { /* buddy requires authorization */
4828
a7a331159e7d [gaim-migrate @ 5153]
Mark Doliner <markdoliner@pidgin.im>
parents: 4827
diff changeset
6154 if ((retval->action == AIM_CB_SSI_ADD) && (retval->name))
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6155 gaim_auth_sendrequest(gc, retval->name);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6156 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6157
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6158 default: { /* La la la */
5197
ab4d919050d7 [gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents: 5167
diff changeset
6159 gchar *buf;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6160 gaim_debug_error("oscar", "ssi: Action 0x%04hx was unsuccessful with error 0x%04hx\n", retval->action, retval->ack);
5402
72ff435414e1 [gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents: 5388
diff changeset
6161 buf = g_strdup_printf(_("Could not add the buddy %s for an unknown reason. The most common reason for this is that you have the maximum number of allowed buddies in your buddy list."), (retval->name ? retval->name : _("(no name)")));
9758
bad4efbbfbf5 [gaim-migrate @ 10625]
Mark Doliner <markdoliner@pidgin.im>
parents: 9754
diff changeset
6162 if ((retval->name != NULL) && !gaim_conv_present_error(retval->name, gaim_connection_get_account(gc), buf))
9627
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
6163 gaim_notify_error(gc, NULL, _("Unable To Add"), buf);
5197
ab4d919050d7 [gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents: 5167
diff changeset
6164 g_free(buf);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6165 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6166 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6167
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6168 retval = retval->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6169 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6170
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6171 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6172 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6173
8227
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6174 static int gaim_ssi_parseadd(aim_session_t *sess, aim_frame_t *fr, ...) {
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6175 GaimConnection *gc = sess->aux_data;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6176 char *gname, *gname_utf8, *alias, *alias_utf8;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6177 GaimBuddy *b;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6178 GaimGroup *g;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6179 va_list ap;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6180 fu16_t type;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6181 const char *name;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6182
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6183 va_start(ap, fr);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6184 type = (fu16_t)va_arg(ap, int);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6185 name = va_arg(ap, char *);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6186 va_end(ap);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6187
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6188 if ((type != 0x0000) || (name == NULL))
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6189 return 1;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6190
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6191 gname = aim_ssi_itemlist_findparentname(sess->ssi.local, name);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6192 gname_utf8 = gname ? gaim_utf8_try_convert(gname) : NULL;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6193 alias = aim_ssi_getalias(sess->ssi.local, gname, name);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6194 alias_utf8 = alias ? gaim_utf8_try_convert(alias) : NULL;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6195 b = gaim_find_buddy(gc->account, name);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6196 free(alias);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6197
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6198 if (b) {
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6199 /* Get server stored alias */
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6200 if (alias_utf8) {
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6201 g_free(b->alias);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6202 b->alias = g_strdup(alias_utf8);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6203 }
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6204 } else {
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6205 b = gaim_buddy_new(gc->account, name, alias_utf8);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6206
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6207 if (!(g = gaim_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) {
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6208 g = gaim_group_new(gname_utf8 ? gname_utf8 : _("Orphans"));
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6209 gaim_blist_add_group(g, NULL);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6210 }
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6211
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6212 gaim_debug_info("oscar",
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
6213 "ssi: adding buddy %s to group %s to local list\n", name, gname_utf8 ? gname_utf8 : _("Orphans"));
8227
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6214 gaim_blist_add_buddy(b, NULL, g, NULL);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6215 }
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6216 g_free(gname_utf8);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6217 g_free(alias_utf8);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6218
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6219 return 1;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6220 }
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6221
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6222 static int gaim_ssi_authgiven(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6223 GaimConnection *gc = sess->aux_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6224 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6225 char *sn, *msg;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6226 gchar *dialog_msg, *nombre;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6227 struct name_data *data;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6228 GaimBuddy *buddy;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6229
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6230 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6231 sn = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6232 msg = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6233 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6234
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6235 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6236 "ssi: %s has given you permission to add him to your buddy list\n", sn);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6237
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6238 buddy = gaim_find_buddy(gc->account, sn);
9620
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
6239 if (buddy && (gaim_buddy_get_alias_only(buddy)))
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
6240 nombre = g_strdup_printf("%s (%s)", sn, gaim_buddy_get_alias_only(buddy));
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6241 else
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6242 nombre = g_strdup(sn);
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6243
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6244 dialog_msg = g_strdup_printf(_("The user %s has given you permission to add you to their buddy list. Do you want to add them?"), nombre);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6245 data = g_new(struct name_data, 1);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6246 data->gc = gc;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6247 data->name = g_strdup(sn);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6248 data->nick = NULL;
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6249
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6250 gaim_request_yes_no(gc, NULL, _("Authorization Given"), dialog_msg,
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6251 0, data,
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
6252 G_CALLBACK(gaim_icq_buddyadd),
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
6253 G_CALLBACK(oscar_free_name_data));
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6254
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6255 g_free(dialog_msg);
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6256 g_free(nombre);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6257
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6258 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6259 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6260
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6261 static int gaim_ssi_authrequest(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6262 GaimConnection *gc = sess->aux_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6263 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6264 char *sn, *msg;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6265 gchar *dialog_msg, *nombre;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6266 struct name_data *data;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6267 GaimBuddy *buddy;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6268
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6269 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6270 sn = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6271 msg = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6272 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6273
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6274 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6275 "ssi: received authorization request from %s\n", sn);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6276
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6277 buddy = gaim_find_buddy(gc->account, sn);
9620
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
6278 if (buddy && (gaim_buddy_get_alias_only(buddy)))
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
6279 nombre = g_strdup_printf("%s (%s)", sn, gaim_buddy_get_alias_only(buddy));
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6280 else
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6281 nombre = g_strdup(sn);
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6282
4337
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
6283 dialog_msg = g_strdup_printf(_("The user %s wants to add you to their buddy list for the following reason:\n%s"), nombre, msg ? msg : _("No reason given."));
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6284 data = g_new(struct name_data, 1);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6285 data->gc = gc;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6286 data->name = g_strdup(sn);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6287 data->nick = NULL;
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6288
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6289 gaim_request_action(gc, NULL, _("Authorization Request"), dialog_msg,
9972
f39adb92a177 [gaim-migrate @ 10883]
Mark Doliner <markdoliner@pidgin.im>
parents: 9971
diff changeset
6290 GAIM_DEFAULT_ACTION_NONE, data, 2,
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6291 _("Authorize"), G_CALLBACK(gaim_auth_grant),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6292 _("Deny"), G_CALLBACK(gaim_auth_dontgrant_msgprompt));
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6293
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6294 g_free(dialog_msg);
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6295 g_free(nombre);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6296
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6297 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6298 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6299
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6300 static int gaim_ssi_authreply(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6301 GaimConnection *gc = sess->aux_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6302 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6303 char *sn, *msg;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6304 gchar *dialog_msg, *nombre;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6305 fu8_t reply;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6306 GaimBuddy *buddy;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6307
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6308 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6309 sn = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6310 reply = (fu8_t)va_arg(ap, int);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6311 msg = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6312 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6313
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6314 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6315 "ssi: received authorization reply from %s. Reply is 0x%04hhx\n", sn, reply);
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6316
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6317 buddy = gaim_find_buddy(gc->account, sn);
9620
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
6318 if (buddy && (gaim_buddy_get_alias_only(buddy)))
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
6319 nombre = g_strdup_printf("%s (%s)", sn, gaim_buddy_get_alias_only(buddy));
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6320 else
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6321 nombre = g_strdup(sn);
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6322
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6323 if (reply) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6324 /* Granted */
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
6325 dialog_msg = g_strdup_printf(_("The user %s has granted your request to add them to your buddy list."), nombre);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
6326 gaim_notify_info(gc, NULL, _("Authorization Granted"), dialog_msg);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6327 } else {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6328 /* Denied */
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
6329 dialog_msg = g_strdup_printf(_("The user %s has denied your request to add them to your buddy list for the following reason:\n%s"), nombre, msg ? msg : _("No reason given."));
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
6330 gaim_notify_info(gc, NULL, _("Authorization Denied"), dialog_msg);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6331 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6332 g_free(dialog_msg);
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6333 g_free(nombre);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6334
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6335 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6336 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6337
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6338 static int gaim_ssi_gotadded(aim_session_t *sess, aim_frame_t *fr, ...) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6339 GaimConnection *gc = sess->aux_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6340 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6341 char *sn;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6342 GaimBuddy *buddy;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6343
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6344 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6345 sn = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6346 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6347
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6348 buddy = gaim_find_buddy(gc->account, sn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6349 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6350 "ssi: %s added you to their buddy list\n", sn);
9620
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
6351 gaim_account_notify_added(gc->account, NULL, sn, (buddy ? gaim_buddy_get_alias_only(buddy) : NULL), NULL);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6352
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6353 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6354 }
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6355 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6356
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6357 static GList *oscar_chat_info(GaimConnection *gc) {
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6358 GList *m = NULL;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6359 struct proto_chat_entry *pce;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6360
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6361 pce = g_new0(struct proto_chat_entry, 1);
9770
d61fe8dcb6d9 [gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9758
diff changeset
6362 pce->label = _("_Room:");
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6363 pce->identifier = "room";
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6364 m = g_list_append(m, pce);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6365
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6366 pce = g_new0(struct proto_chat_entry, 1);
7841
0000a4c68bf8 [gaim-migrate @ 8494]
Mark Doliner <markdoliner@pidgin.im>
parents: 7805
diff changeset
6367 pce->label = _("_Exchange:");
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6368 pce->identifier = "exchange";
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6369 pce->is_int = TRUE;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6370 pce->min = 4;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6371 pce->max = 20;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6372 m = g_list_append(m, pce);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6373
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6374 return m;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6375 }
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6376
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6377 GHashTable *oscar_chat_info_defaults(GaimConnection *gc, const char *chat_name)
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6378 {
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6379 GHashTable *defaults;
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6380
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6381 defaults = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free);
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6382
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6383 if (chat_name != NULL)
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6384 g_hash_table_insert(defaults, "room", g_strdup(chat_name));
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6385
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6386 return defaults;
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6387 }
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6388
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9914
diff changeset
6389 static char *oscar_get_chat_name(GHashTable *data) {
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9914
diff changeset
6390 return g_strdup(g_hash_table_lookup(data, "room"));
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9914
diff changeset
6391 }
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9914
diff changeset
6392
8308
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6393 static void oscar_join_chat(GaimConnection *gc, GHashTable *data) {
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6394 OscarData *od = (OscarData *)gc->proto_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
6395 aim_conn_t *cur;
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6396 char *name, *exchange;
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6397
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6398 name = g_hash_table_lookup(data, "room");
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6399 exchange = g_hash_table_lookup(data, "exchange");
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6400
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6401 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6402 "Attempting to join chat room %s.\n", name);
8308
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6403
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6404 if ((name == NULL) || (*name == '\0')) {
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6405 gaim_notify_error(gc, NULL, _("Invalid chat name specified."), NULL);
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6406 return;
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6407 }
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6408
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6409 if ((cur = aim_getconn_type(od->sess, AIM_CONN_TYPE_CHATNAV))) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6410 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6411 "chatnav exists, creating room\n");
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6412 aim_chatnav_createroom(od->sess, cur, name, atoi(exchange));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6413 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6414 /* this gets tricky */
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
6415 struct create_room *cr = g_new0(struct create_room, 1);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6416 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6417 "chatnav does not exist, opening chatnav\n");
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6418 cr->exchange = atoi(exchange);
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
6419 cr->name = g_strdup(name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6420 od->create_rooms = g_slist_append(od->create_rooms, cr);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6421 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_CHATNAV);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6422 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6423 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6424
8308
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6425 static void oscar_chat_invite(GaimConnection *gc, int id, const char *message, const char *name) {
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6426 OscarData *od = (OscarData *)gc->proto_data;
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6427 struct chat_connection *ccon = find_oscar_chat(gc, id);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6428
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6429 if (!ccon)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6430 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6431
8225
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
6432 aim_im_sendch2_chatinvite(od->sess, name, message ? message : "",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6433 ccon->exchange, ccon->name, 0x0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6434 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6435
8308
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6436 static void oscar_chat_leave(GaimConnection *gc, int id) {
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6437 OscarData *od = gc ? (OscarData *)gc->proto_data : NULL;
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6438 GSList *bcs = gc->buddy_chats;
5679
943eb70954b6 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
6439 GaimConversation *b = NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6440 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6441 int count = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6442
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6443 while (bcs) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6444 count++;
5679
943eb70954b6 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
6445 b = (GaimConversation *)bcs->data;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
6446 if (id == gaim_conv_chat_get_id(GAIM_CONV_CHAT(b)))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6447 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6448 bcs = bcs->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6449 b = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6450 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6451
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6452 if (!b)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6453 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6454
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6455 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6456 "Attempting to leave room %s (currently in %d rooms)\n", b->name, count);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6457
8308
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6458 c = find_oscar_chat(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(b)));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6459 if (c != NULL) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6460 if (od)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6461 od->oscar_chats = g_slist_remove(od->oscar_chats, c);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6462 if (c->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
6463 gaim_input_remove(c->inpa);
8308
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6464 if (gc && od->sess)
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6465 aim_conn_kill(od->sess, &c->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6466 g_free(c->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6467 g_free(c->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6468 g_free(c);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6469 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6470 /* we do this because with Oscar it doesn't tell us we left */
8308
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6471 serv_got_chat_left(gc, gaim_conv_chat_get_id(GAIM_CONV_CHAT(b)));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6472 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6473
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
6474 static int oscar_send_chat(GaimConnection *gc, int id, const char *message) {
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
6475 OscarData *od = (OscarData *)gc->proto_data;
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
6476 GaimConversation *conv = NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6477 struct chat_connection *c = NULL;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
6478 char *buf, *buf2;
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
6479 fu16_t charset, charsubset;
9807
ff713acc7204 [gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents: 9806
diff changeset
6480 char *charsetstr = NULL;
8907
17b9da22de1e [gaim-migrate @ 9677]
Gary Kramlich <grim@pidgin.im>
parents: 8902
diff changeset
6481 gsize len;
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
6482
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
6483 if (!(conv = gaim_find_chat(gc, id)))
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
6484 return -EINVAL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6485
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
6486 if (!(c = find_oscar_chat_by_conv(gc, conv)))
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
6487 return -EINVAL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6488
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
6489 buf = gaim_strdup_withhtml(message);
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
6490 len = strlen(buf);
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
6491
8962
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6492 if (strstr(buf, "<IMG "))
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6493 gaim_conversation_write(conv, "",
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6494 _("Your IM Image was not sent. "
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6495 "You cannot send IM Images in AIM chats."),
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6496 GAIM_MESSAGE_ERROR, time(NULL));
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6497
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
6498 gaim_plugin_oscar_convert_to_best_encoding(gc, NULL, buf, &buf2, &len, &charset, &charsubset);
8359
3c62ea91eba8 [gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents: 8353
diff changeset
6499 if ((len > c->maxlen) || (len > c->maxvis)) {
3c62ea91eba8 [gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents: 8353
diff changeset
6500 g_free(buf2);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
6501 return -E2BIG;
8359
3c62ea91eba8 [gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents: 8353
diff changeset
6502 }
3c62ea91eba8 [gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents: 8353
diff changeset
6503
9831
dfebe1c6bffe [gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents: 9830
diff changeset
6504 if (charset == AIM_CHARSET_ASCII)
dfebe1c6bffe [gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents: 9830
diff changeset
6505 charsetstr = "us-ascii";
dfebe1c6bffe [gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents: 9830
diff changeset
6506 else if (charset == AIM_CHARSET_UNICODE)
dfebe1c6bffe [gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents: 9830
diff changeset
6507 charsetstr = "unicode-2-0";
dfebe1c6bffe [gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents: 9830
diff changeset
6508 else if (charset == AIM_CHARSET_CUSTOM)
dfebe1c6bffe [gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents: 9830
diff changeset
6509 charsetstr = "iso-8859-1";
9807
ff713acc7204 [gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents: 9806
diff changeset
6510 aim_chat_send_im(od->sess, c->conn, 0, buf2, len, charsetstr, "en");
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
6511 g_free(buf2);
8359
3c62ea91eba8 [gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents: 8353
diff changeset
6512
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
6513 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6514 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6515
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6516 static const char *oscar_list_icon(GaimAccount *a, GaimBuddy *b)
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6517 {
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
6518 if (!b || (b && b->name && b->name[0] == '+')) {
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
6519 if (a != NULL && aim_sn_is_icq(gaim_account_get_username(a)))
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6520 return "icq";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6521 else
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6522 return "aim";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6523 }
5646
0aa637549d87 [gaim-migrate @ 6060]
Christian Hammond <chipx86@chipx86.com>
parents: 5638
diff changeset
6524
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
6525 if (b != NULL && aim_sn_is_icq(b->name))
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6526 return "icq";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6527 return "aim";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6528 }
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6529
9972
f39adb92a177 [gaim-migrate @ 10883]
Mark Doliner <markdoliner@pidgin.im>
parents: 9971
diff changeset
6530 static void oscar_list_emblems(GaimBuddy *b, const char **se, const char **sw, const char **nw, const char **ne)
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6531 {
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6532 GaimConnection *gc = NULL;
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6533 OscarData *od = NULL;
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6534 GaimAccount *account = NULL;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6535 GaimPresence *presence;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6536 GaimStatus *status;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6537 const char *status_id;
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6538 char *emblems[4] = {NULL,NULL,NULL,NULL};
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6539 int i = 0;
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6540 aim_userinfo_t *userinfo = NULL;
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6541
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6542 if (b != NULL)
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6543 account = b->account;
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6544 if (account != NULL)
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6545 gc = account->gc;
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6546 if (gc != NULL)
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6547 od = gc->proto_data;
7945
7270cd25f841 [gaim-migrate @ 8619]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
6548 if (od != NULL)
7270cd25f841 [gaim-migrate @ 8619]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
6549 userinfo = aim_locate_finduserinfo(od->sess, b->name);
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6550
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6551 presence = gaim_buddy_get_presence(b);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6552 status = gaim_presence_get_active_status(presence);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6553 status_id = gaim_status_get_id(status);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6554
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6555 if (gaim_presence_is_online(presence) == FALSE) {
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6556 char *gname;
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6557 if ((b->name) && (od) && (od->sess->ssi.received_data) &&
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6558 (gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name)) &&
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6559 (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name))) {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6560 emblems[i++] = "notauthorized";
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6561 } else {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6562 emblems[i++] = "offline";
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6563 }
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6564 }
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4901
diff changeset
6565
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6566 if (b->name && aim_sn_is_icq(b->name)) {
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6567 if (!strcmp(status_id, OSCAR_STATUS_ID_INVISIBLE))
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6568 emblems[i++] = "invisible";
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6569 else if (!strcmp(status_id, OSCAR_STATUS_ID_FREE4CHAT))
4960
65bf67b7600f [gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents: 4959
diff changeset
6570 emblems[i++] = "freeforchat";
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6571 else if (!strcmp(status_id, OSCAR_STATUS_ID_DND))
4960
65bf67b7600f [gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents: 4959
diff changeset
6572 emblems[i++] = "dnd";
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6573 else if (!strcmp(status_id, OSCAR_STATUS_ID_NA))
4960
65bf67b7600f [gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents: 4959
diff changeset
6574 emblems[i++] = "na";
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6575 else if (!strcmp(status_id, OSCAR_STATUS_ID_OCCUPIED))
4960
65bf67b7600f [gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents: 4959
diff changeset
6576 emblems[i++] = "occupied";
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6577 else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY))
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
6578 emblems[i++] = "away";
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6579 } else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY)) {
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6580 emblems[i++] = "away";
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6581 }
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6582
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6583 if (userinfo != NULL ) {
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6584 /* if (userinfo->flags & AIM_FLAG_UNCONFIRMED)
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6585 emblems[i++] = "unconfirmed"; */
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6586 if (userinfo->flags & AIM_FLAG_ADMINISTRATOR)
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6587 emblems[i++] = "admin";
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6588 if (userinfo->flags & AIM_FLAG_AOL)
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6589 emblems[i++] = "aol";
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6590 if (userinfo->flags & AIM_FLAG_WIRELESS)
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6591 emblems[i++] = "wireless";
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6592 if (userinfo->flags & AIM_FLAG_ACTIVEBUDDY)
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6593 emblems[i++] = "activebuddy";
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6594
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6595 if ((i < 4) && (userinfo->capabilities & AIM_CAPS_HIPTOP))
7945
7270cd25f841 [gaim-migrate @ 8619]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
6596 emblems[i++] = "hiptop";
7270cd25f841 [gaim-migrate @ 8619]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
6597
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6598 if ((i < 4) && (userinfo->capabilities & AIM_CAPS_SECUREIM))
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6599 emblems[i++] = "secure";
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6600 }
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6601
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6602 *se = emblems[0];
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6603 *sw = emblems[1];
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6604 *nw = emblems[2];
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6605 *ne = emblems[3];
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6606 }
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6607
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6608 static char *oscar_tooltip_text(GaimBuddy *b) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6609 GaimConnection *gc = b->account->gc;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
6610 OscarData *od = gc->proto_data;
7045
458b55091f8b [gaim-migrate @ 7608]
Mark Doliner <markdoliner@pidgin.im>
parents: 7038
diff changeset
6611 aim_userinfo_t *userinfo = aim_locate_finduserinfo(od->sess, b->name);
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
6612 GString *str = g_string_new("");
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6613
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6614 if (GAIM_BUDDY_IS_ONLINE(b)) {
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
6615 oscar_string_append_info(gc, str, "\n", b, userinfo);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
6616
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
6617 if ((userinfo != NULL) && (userinfo->flags & AIM_FLAG_AWAY) && (userinfo->away_len > 0) && (userinfo->away != NULL) && (userinfo->away_encoding != NULL)) {
8225
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
6618 gchar *charset = oscar_encoding_extract(userinfo->away_encoding);
8392
6e8d04bc180d [gaim-migrate @ 9121]
Mark Doliner <markdoliner@pidgin.im>
parents: 8363
diff changeset
6619 gchar *away_utf8 = oscar_encoding_to_utf8(charset, userinfo->away, userinfo->away_len);
8225
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
6620 g_free(charset);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
6621 if (away_utf8 != NULL) {
7091
4430f44e86ad [gaim-migrate @ 7656]
Mark Doliner <markdoliner@pidgin.im>
parents: 7083
diff changeset
6622 gchar *tmp1, *tmp2;
9627
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
6623 tmp2 = gaim_markup_strip_html(away_utf8);
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6624 g_free(away_utf8);
8571
2e789c27f81e [gaim-migrate @ 9319]
Mark Doliner <markdoliner@pidgin.im>
parents: 8568
diff changeset
6625 tmp1 = gaim_escape_html(tmp2);
7091
4430f44e86ad [gaim-migrate @ 7656]
Mark Doliner <markdoliner@pidgin.im>
parents: 7083
diff changeset
6626 g_free(tmp2);
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
6627 tmp2 = gaim_str_sub_away_formatters(tmp1, gaim_account_get_username(gaim_connection_get_account(gc)));
8461
920171a59e45 [gaim-migrate @ 9191]
Mark Doliner <markdoliner@pidgin.im>
parents: 8446
diff changeset
6628 g_free(tmp1);
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
6629 g_string_append_printf(str, "\n<b>%s:</b> %s", _("Away Message"), tmp2);
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
6630 g_free(tmp2);
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
6631 }
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6632 }
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
6633 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
6634
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
6635 return g_string_free(str, FALSE);
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6636 }
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6637
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6638 static char *oscar_status_text(GaimBuddy *b)
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6639 {
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6640 GaimConnection *gc;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6641 OscarData *od;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6642 GaimStatus *status;
5167
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6643 gchar *ret = NULL;
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6644
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6645 gc = gaim_account_get_connection(gaim_buddy_get_account(b));
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6646 od = gc->proto_data;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6647 status = gaim_presence_get_active_status(gaim_buddy_get_presence(b));
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6648
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6649 if (gaim_status_is_available(status) == FALSE || (((b->uc & 0xffff0000) >> 16) & AIM_ICQ_STATE_CHAT)) {
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
6650 if (aim_sn_is_icq(b->name))
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
6651 ret = oscar_icqstatus((b->uc & 0xffff0000) >> 16);
7038
59ed07d7f73a [gaim-migrate @ 7601]
Mark Doliner <markdoliner@pidgin.im>
parents: 7037
diff changeset
6652 else
59ed07d7f73a [gaim-migrate @ 7601]
Mark Doliner <markdoliner@pidgin.im>
parents: 7037
diff changeset
6653 ret = g_strdup(_("Away"));
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
6654 } else if (GAIM_BUDDY_IS_ONLINE(b)) {
7261
4be05820d441 [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
6655 struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(b->account, b->name));
6292
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
6656 if (bi->availmsg)
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
6657 ret = g_markup_escape_text(bi->availmsg, strlen(bi->availmsg));
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
6658 } else {
5167
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6659 char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name);
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6660 if (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name))
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6661 ret = g_strdup(_("Not Authorized"));
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6662 else
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6663 ret = g_strdup(_("Offline"));
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6664 }
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6665
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6666 return ret;
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6667 }
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6668
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6669
5844
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
6670 static int oscar_icon_req(aim_session_t *sess, aim_frame_t *fr, ...) {
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6671 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
6672 OscarData *od = gc->proto_data;
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6673 va_list ap;
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6674 fu16_t type;
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6675 fu8_t flags = 0, length = 0;
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6676 char *md5 = NULL;
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6677
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6678
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6679 va_start(ap, fr);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6680 type = va_arg(ap, int);
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6681
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6682 switch(type) {
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6683 case 0x0000:
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6684 case 0x0001: {
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6685 flags = va_arg(ap, int);
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6686 length = va_arg(ap, int);
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6687 md5 = va_arg(ap, char *);
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6688
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6689 if (flags == 0x41) {
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6690 if (!aim_getconn_type(od->sess, AIM_CONN_TYPE_ICON) && !od->iconconnecting) {
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6691 od->iconconnecting = TRUE;
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6692 od->set_icon = TRUE;
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6693 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_ICON);
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6694 } else {
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6695 struct stat st;
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6696 const char *iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc));
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6697 if (iconfile == NULL) {
8363
d46380322c37 [gaim-migrate @ 9088]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8361
diff changeset
6698 aim_ssi_delicon(od->sess);
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6699 } else if (!stat(iconfile, &st)) {
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6700 char *buf = g_malloc(st.st_size);
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6701 FILE *file = fopen(iconfile, "rb");
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6702 if (file) {
9532
32470c5a1d58 [gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 9481
diff changeset
6703 /* XXX - Use g_file_get_contents()? */
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6704 fread(buf, 1, st.st_size, file);
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6705 fclose(file);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6706 gaim_debug_info("oscar",
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6707 "Uploading icon to icon server\n");
6879
cc7abcef355c [gaim-migrate @ 7425]
Mark Doliner <markdoliner@pidgin.im>
parents: 6873
diff changeset
6708 aim_bart_upload(od->sess, buf, st.st_size);
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6709 } else
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6710 gaim_debug_error("oscar",
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6711 "Can't open buddy icon file!\n");
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6712 g_free(buf);
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6713 } else {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6714 gaim_debug_error("oscar",
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6715 "Can't stat buddy icon file!\n");
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6716 }
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6717 }
8363
d46380322c37 [gaim-migrate @ 9088]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8361
diff changeset
6718 } else if (flags == 0x81) {
d46380322c37 [gaim-migrate @ 9088]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8361
diff changeset
6719 const char *iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc));
d46380322c37 [gaim-migrate @ 9088]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8361
diff changeset
6720 if (iconfile == NULL)
d46380322c37 [gaim-migrate @ 9088]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8361
diff changeset
6721 aim_ssi_delicon(od->sess);
d46380322c37 [gaim-migrate @ 9088]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8361
diff changeset
6722 else
d46380322c37 [gaim-migrate @ 9088]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8361
diff changeset
6723 aim_ssi_seticon(od->sess, md5, length);
d46380322c37 [gaim-migrate @ 9088]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8361
diff changeset
6724 }
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6725 } break;
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6726
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6727 case 0x0002: { /* We just set an "available" message? */
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6728 } break;
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6729 }
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6730
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6731 va_end(ap);
5844
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
6732
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
6733 return 0;
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6734 }
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6735
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6736 static void oscar_set_permit_deny(GaimConnection *gc) {
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6737 GaimAccount *account = gaim_connection_get_account(gc);
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
6738 OscarData *od = (OscarData *)gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6739 #ifdef NOSSI
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8092
diff changeset
6740 GSList *list;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6741 char buf[MAXMSGLEN];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6742 int at;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6743
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6744 switch(account->perm_deny) {
8175
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6745 case GAIM_PRIVACY_ALLOW_ALL:
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6746 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, gaim_account_get_username(account));
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6747 break;
8175
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6748 case GAIM_PRIVACY_DENY_ALL:
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6749 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, gaim_account_get_username(account));
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6750 break;
8175
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6751 case GAIM_PRIVACY_ALLOW_USERS:
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6752 list = account->permit;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6753 at = 0;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6754 while (list) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6755 at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", (char *)list->data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6756 list = list->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6757 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6758 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, buf);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6759 break;
8175
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6760 case GAIM_PRIVACY_DENY_USERS:
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6761 list = account->deny;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6762 at = 0;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6763 while (list) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6764 at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", (char *)list->data);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6765 list = list->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6766 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6767 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, buf);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6768 break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6769 default:
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6770 break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6771 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6772 #else
8175
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6773 if (od->sess->ssi.received_data) {
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6774 switch (account->perm_deny) {
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6775 case GAIM_PRIVACY_ALLOW_ALL:
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6776 aim_ssi_setpermdeny(od->sess, 0x01, 0xffffffff);
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6777 break;
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6778 case GAIM_PRIVACY_ALLOW_BUDDYLIST:
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6779 aim_ssi_setpermdeny(od->sess, 0x05, 0xffffffff);
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6780 break;
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6781 case GAIM_PRIVACY_ALLOW_USERS:
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6782 aim_ssi_setpermdeny(od->sess, 0x03, 0xffffffff);
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6783 break;
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6784 case GAIM_PRIVACY_DENY_ALL:
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6785 aim_ssi_setpermdeny(od->sess, 0x02, 0xffffffff);
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6786 break;
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6787 case GAIM_PRIVACY_DENY_USERS:
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6788 aim_ssi_setpermdeny(od->sess, 0x04, 0xffffffff);
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6789 break;
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6790 default:
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6791 aim_ssi_setpermdeny(od->sess, 0x01, 0xffffffff);
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6792 break;
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6793 }
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6794 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6795 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6796 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6797
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6798 static void oscar_add_permit(GaimConnection *gc, const char *who) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6799 #ifdef NOSSI
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8092
diff changeset
6800 if (gc->account->perm_deny == 3)
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6801 oscar_set_permit_deny(gc);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6802 #else
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
6803 OscarData *od = (OscarData *)gc->proto_data;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6804 gaim_debug_info("oscar", "ssi: About to add a permit\n");
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6805 if (od->sess->ssi.received_data)
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
6806 aim_ssi_addpermit(od->sess, who);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6807 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6808 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6809
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6810 static void oscar_add_deny(GaimConnection *gc, const char *who) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6811 #ifdef NOSSI
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8092
diff changeset
6812 if (gc->account->perm_deny == 4)
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6813 oscar_set_permit_deny(gc);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6814 #else
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
6815 OscarData *od = (OscarData *)gc->proto_data;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6816 gaim_debug_info("oscar", "ssi: About to add a deny\n");
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6817 if (od->sess->ssi.received_data)
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
6818 aim_ssi_adddeny(od->sess, who);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6819 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6820 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6821
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6822 static void oscar_rem_permit(GaimConnection *gc, const char *who) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6823 #ifdef NOSSI
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8092
diff changeset
6824 if (gc->account->perm_deny == 3)
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6825 oscar_set_permit_deny(gc);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6826 #else
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
6827 OscarData *od = (OscarData *)gc->proto_data;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6828 gaim_debug_info("oscar", "ssi: About to delete a permit\n");
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6829 if (od->sess->ssi.received_data)
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
6830 aim_ssi_delpermit(od->sess, who);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6831 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6832 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6833
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6834 static void oscar_rem_deny(GaimConnection *gc, const char *who) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6835 #ifdef NOSSI
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8092
diff changeset
6836 if (gc->account->perm_deny == 4)
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6837 oscar_set_permit_deny(gc);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6838 #else
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
6839 OscarData *od = (OscarData *)gc->proto_data;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6840 gaim_debug_info("oscar", "ssi: About to delete a deny\n");
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6841 if (od->sess->ssi.received_data)
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
6842 aim_ssi_deldeny(od->sess, who);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6843 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6844 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6845
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
6846 static GList *
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
6847 oscar_status_types(GaimAccount *account)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6848 {
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
6849 GList *status_types = NULL;
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
6850 GaimStatusType *type;
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
6851
9973
e163f8e7e8a4 [gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents: 9972
diff changeset
6852 g_return_val_if_fail(account != NULL, NULL);
e163f8e7e8a4 [gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents: 9972
diff changeset
6853
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6854 /* Oscar-common status types */
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6855 type = gaim_status_type_new_full(GAIM_STATUS_OFFLINE,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6856 OSCAR_STATUS_ID_OFFLINE,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6857 _("Offline"), FALSE, FALSE, FALSE);
9976
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
6858 status_types = g_list_append(status_types, type);
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
6859
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6860 type = gaim_status_type_new_full(GAIM_STATUS_ONLINE,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6861 OSCAR_STATUS_ID_ONLINE,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6862 _("Online"), FALSE, FALSE, FALSE);
9976
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
6863 status_types = g_list_append(status_types, type);
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
6864
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6865 type = gaim_status_type_new_full(GAIM_STATUS_AVAILABLE,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6866 OSCAR_STATUS_ID_AVAILABLE,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6867 _("Available"), TRUE, TRUE, FALSE);
9976
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
6868 status_types = g_list_append(status_types, type);
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
6869
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6870 type = gaim_status_type_new_full(GAIM_STATUS_AWAY,
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6871 OSCAR_STATUS_ID_AWAY,
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6872 _("Away"), TRUE, TRUE, FALSE);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6873 status_types = g_list_append(status_types, type);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6874
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6875 type = gaim_status_type_new_full(GAIM_STATUS_HIDDEN,
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6876 OSCAR_STATUS_ID_INVISIBLE,
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6877 _("Invisible"), TRUE, TRUE, TRUE);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6878 status_types = g_list_append(status_types, type);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6879
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6880 if (aim_sn_is_icq(gaim_account_get_username(account)) == FALSE )
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6881 return status_types;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6882
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6883 /* ICQ-specific status types */
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6884
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6885 type = gaim_status_type_new_full(GAIM_STATUS_AVAILABLE,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6886 OSCAR_STATUS_ID_FREE4CHAT,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6887 _("Free For Chat"), TRUE, TRUE, FALSE);
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
6888 status_types = g_list_append(status_types, type);
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
6889
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6890 type = gaim_status_type_new_full(GAIM_STATUS_UNAVAILABLE,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6891 OSCAR_STATUS_ID_OCCUPIED,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6892 _("Occupied"), TRUE, TRUE, FALSE);
9976
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
6893 status_types = g_list_append(status_types, type);
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
6894
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6895 type = gaim_status_type_new_full(GAIM_STATUS_EXTENDED_AWAY,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6896 OSCAR_STATUS_ID_DND,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6897 _("Do Not Disturb"), TRUE, TRUE, FALSE);
9976
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
6898 status_types = g_list_append(status_types, type);
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
6899
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6900 type = gaim_status_type_new_full(GAIM_STATUS_EXTENDED_AWAY,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6901 OSCAR_STATUS_ID_NA,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6902 _("Not Available"), TRUE, TRUE, FALSE);
9976
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
6903 status_types = g_list_append(status_types, type);
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
6904
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
6905 return status_types;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6906 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6907
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6908 static void oscar_ssi_editcomment(struct name_data *data, const char *text) {
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6909 GaimConnection *gc = data->gc;
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6910 OscarData *od = gc->proto_data;
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6911 GaimBuddy *b;
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6912 GaimGroup *g;
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6913
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6914 if (!(b = gaim_find_buddy(gaim_connection_get_account(data->gc), data->name))) {
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6915 oscar_free_name_data(data);
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6916 return;
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6917 }
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6918
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6919 if (!(g = gaim_find_buddys_group(b))) {
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6920 oscar_free_name_data(data);
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6921 return;
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6922 }
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6923
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6924 aim_ssi_editcomment(od->sess, g->name, data->name, text);
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6925
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6926 if (!aim_sncmp(data->name, gc->account->username))
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6927 gaim_check_comment(od, text);
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6928
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6929 oscar_free_name_data(data);
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6930 }
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6931
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6932 static void oscar_buddycb_edit_comment(GaimBlistNode *node, gpointer ignore) {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6933
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6934 GaimBuddy *buddy;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6935 GaimConnection *gc;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6936 OscarData *od;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6937 struct name_data *data;
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6938 GaimGroup *g;
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6939 char *comment;
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6940 gchar *comment_utf8;
9631
65565164149f [gaim-migrate @ 10475]
Jon Oberheide
parents: 9627
diff changeset
6941 gchar *title;
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6942
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6943 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node));
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6944
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6945 buddy = (GaimBuddy *) node;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6946 gc = gaim_account_get_connection(buddy->account);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6947 od = gc->proto_data;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6948
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6949 data = g_new(struct name_data, 1);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6950
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6951 if (!(g = gaim_find_buddys_group(buddy)))
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6952 return;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6953 comment = aim_ssi_getcomment(od->sess->ssi.local, g->name, buddy->name);
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6954 comment_utf8 = comment ? gaim_utf8_try_convert(comment) : NULL;
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6955
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6956 data->gc = gc;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6957 data->name = g_strdup(buddy->name);
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6958 data->nick = NULL;
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6959
9631
65565164149f [gaim-migrate @ 10475]
Jon Oberheide
parents: 9627
diff changeset
6960 title = g_strdup_printf(_("Buddy Comment for %s"), data->name);
65565164149f [gaim-migrate @ 10475]
Jon Oberheide
parents: 9627
diff changeset
6961 gaim_request_input(gc, title, _("Buddy Comment:"), NULL,
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8670
diff changeset
6962 comment_utf8, TRUE, FALSE, NULL,
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6963 _("OK"), G_CALLBACK(oscar_ssi_editcomment),
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6964 _("Cancel"), G_CALLBACK(oscar_free_name_data),
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6965 data);
9631
65565164149f [gaim-migrate @ 10475]
Jon Oberheide
parents: 9627
diff changeset
6966 g_free(title);
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6967
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6968 free(comment);
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6969 g_free(comment_utf8);
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6970 }
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6971
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6972 static GList *oscar_buddy_menu(GaimBuddy *buddy) {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6973
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6974 GaimConnection *gc = gaim_account_get_connection(buddy->account);
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
6975 OscarData *od = gc->proto_data;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6976
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6977 GList *m = NULL;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6978 GaimBlistNodeAction *act;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6979
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6980 act = gaim_blist_node_action_new(_("Edit Buddy Comment"),
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6981 oscar_buddycb_edit_comment, NULL);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6982 m = g_list_append(m, act);
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6983
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6984 if (od->icq) {
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
6985 #if 0
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6986 act = gaim_blist_node_action_new(_("Get Status Msg"),
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6987 oscar_get_icqstatusmsg, NULL);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6988 m = g_list_append(m, act);
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
6989 #endif
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6990 } else {
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
6991 aim_userinfo_t *userinfo;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6992 userinfo = aim_locate_finduserinfo(od->sess, buddy->name);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6993
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6994 if (userinfo && aim_sncmp(gaim_account_get_username(buddy->account), buddy->name) &&
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6995 GAIM_BUDDY_IS_ONLINE(buddy)) {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6996
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
6997 if (userinfo->capabilities & AIM_CAPS_DIRECTIM) {
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6998 act = gaim_blist_node_action_new(_("Direct IM"),
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6999 oscar_ask_direct_im, NULL);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7000 m = g_list_append(m, act);
5917
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
7001 }
9466
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
7002 #if 0
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
7003 if (userinfo->capabilities & AIM_CAPS_GETFILE) {
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7004 act = gaim_blist_node_action_new(_("Get File"),
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7005 oscar_ask_getfile, NULL);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7006 m = g_list_append(m, act);
5917
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
7007 }
4826
ce211ce6a336 [gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents: 4825
diff changeset
7008 #endif
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7009 }
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
7010 }
5197
ab4d919050d7 [gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents: 5167
diff changeset
7011
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
7012 if (od->sess->ssi.received_data) {
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7013 char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, buddy->name);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7014 if (gname && aim_ssi_waitingforauth(od->sess->ssi.local, gname, buddy->name)) {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7015 act = gaim_blist_node_action_new(_("Re-request Authorization"),
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7016 gaim_auth_sendrequest_menu, NULL);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7017 m = g_list_append(m, act);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7018 }
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4901
diff changeset
7019 }
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4901
diff changeset
7020
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7021 return m;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7022 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7023
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7024
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7025 static GList *oscar_blist_node_menu(GaimBlistNode *node) {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7026 if(GAIM_BLIST_NODE_IS_BUDDY(node)) {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7027 return oscar_buddy_menu((GaimBuddy *) node);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7028 } else {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7029 return NULL;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7030 }
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7031 }
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7032
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7033
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
7034 static void oscar_format_screenname(GaimConnection *gc, const char *nick) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
7035 OscarData *od = gc->proto_data;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
7036 if (!aim_sncmp(gaim_account_get_username(gaim_connection_get_account(gc)), nick)) {
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7037 if (!aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH)) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7038 od->setnick = TRUE;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7039 od->newsn = g_strdup(nick);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7040 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7041 } else {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7042 aim_admin_setnick(od->sess, aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH), nick);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7043 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7044 } else {
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
7045 gaim_notify_error(gc, NULL, _("The new formatting is invalid."),
8152
f26c9406b4b3 [gaim-migrate @ 8864]
Mark Doliner <markdoliner@pidgin.im>
parents: 8151
diff changeset
7046 _("Screen name formatting can change only capitalization and whitespace."));
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7047 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7048 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7049
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7050 static void oscar_show_format_screenname(GaimPluginAction *action)
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7051 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7052 GaimConnection *gc = (GaimConnection *) action->context;
8152
f26c9406b4b3 [gaim-migrate @ 8864]
Mark Doliner <markdoliner@pidgin.im>
parents: 8151
diff changeset
7053 gaim_request_input(gc, NULL, _("New screen name formatting:"), NULL,
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8670
diff changeset
7054 gaim_connection_get_display_name(gc), FALSE, FALSE, NULL,
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
7055 _("OK"), G_CALLBACK(oscar_format_screenname),
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
7056 _("Cancel"), NULL,
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
7057 gc);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7058 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7059
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7060 static void oscar_confirm_account(GaimPluginAction *action)
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7061 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7062 GaimConnection *gc = (GaimConnection *) action->context;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
7063 OscarData *od = gc->proto_data;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7064 aim_conn_t *conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7065
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7066 if (conn) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7067 aim_admin_reqconfirm(od->sess, conn);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7068 } else {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7069 od->conf = TRUE;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7070 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7071 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7072 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7073
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7074 static void oscar_show_email(GaimPluginAction *action)
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7075 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7076 GaimConnection *gc = (GaimConnection *) action->context;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
7077 OscarData *od = gc->proto_data;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7078 aim_conn_t *conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7079
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7080 if (conn) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7081 aim_admin_getinfo(od->sess, conn, 0x11);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7082 } else {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7083 od->reqemail = TRUE;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7084 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7085 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7086 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7087
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
7088 static void oscar_change_email(GaimConnection *gc, const char *email)
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7089 {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
7090 OscarData *od = gc->proto_data;
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7091 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
7092
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7093 if (conn) {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7094 aim_admin_setemail(od->sess, conn, email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7095 } else {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7096 od->setemail = TRUE;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7097 od->email = g_strdup(email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7098 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7099 }
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7100 }
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7101
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7102 static void oscar_show_change_email(GaimPluginAction *action)
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7103 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7104 GaimConnection *gc = (GaimConnection *) action->context;
6035
b245be9cbe3b [gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents: 6029
diff changeset
7105 gaim_request_input(gc, NULL, _("Change Address To:"), NULL, NULL,
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8670
diff changeset
7106 FALSE, FALSE, NULL,
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
7107 _("OK"), G_CALLBACK(oscar_change_email),
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
7108 _("Cancel"), NULL,
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
7109 gc);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7110 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7111
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7112 static void oscar_show_awaitingauth(GaimPluginAction *action)
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7113 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7114 GaimConnection *gc = (GaimConnection *) action->context;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
7115 OscarData *od = gc->proto_data;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7116 gchar *nombre, *text, *tmp;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7117 GaimBlistNode *gnode, *cnode, *bnode;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7118 int num=0;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7119
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
7120 text = g_strdup("");
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7121
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
7122 for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7123 GaimGroup *group = (GaimGroup *)gnode;
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
7124 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
7125 continue;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7126 for (cnode = gnode->child; cnode; cnode = cnode->next) {
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7127 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode))
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
7128 continue;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7129 for (bnode = cnode->child; bnode; bnode = bnode->next) {
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7130 GaimBuddy *buddy = (GaimBuddy *)bnode;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7131 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7132 continue;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7133 if (buddy->account == gc->account && aim_ssi_waitingforauth(od->sess->ssi.local, group->name, buddy->name)) {
9620
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
7134 if (gaim_buddy_get_alias_only(buddy))
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
7135 nombre = g_strdup_printf(" %s (%s)", buddy->name, gaim_buddy_get_alias_only(buddy));
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7136 else
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7137 nombre = g_strdup_printf(" %s", buddy->name);
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
7138 tmp = g_strdup_printf("%s%s<br>", text, nombre);
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7139 g_free(text);
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7140 text = tmp;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7141 g_free(nombre);
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7142 num++;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7143 }
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7144 }
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
7145 }
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7146 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7147
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7148 if (!num) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7149 g_free(text);
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
7150 text = g_strdup(_("<i>you are not waiting for authorization</i>"));
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
7151 }
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
7152
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
7153 gaim_notify_formatted(gc, NULL, _("You are awaiting authorization from "
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
7154 "the following buddies"), _("You can re-request "
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
7155 "authorization from these buddies by "
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
7156 "right-clicking on them and selecting "
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
7157 "\"Re-request Authorization.\""), text, NULL, NULL);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7158 g_free(text);
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
7159 }
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
7160
7080
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7161 static void search_by_email_cb(GaimConnection *gc, const char *email)
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7162 {
8950
1b90ece5fb4f [gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents: 8907
diff changeset
7163 OscarData *od = (OscarData *)gc->proto_data;
1b90ece5fb4f [gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents: 8907
diff changeset
7164
1b90ece5fb4f [gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents: 8907
diff changeset
7165 aim_search_address(od->sess, od->conn, email);
7080
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7166 }
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7167
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7168 static void oscar_show_find_email(GaimPluginAction *action)
7080
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7169 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7170 GaimConnection *gc = (GaimConnection *) action->context;
7080
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7171 gaim_request_input(gc, _("Find Buddy by E-mail"),
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7172 _("Search for a buddy by e-mail address"),
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7173 _("Type the e-mail address of the buddy you are "
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7174 "searching for."),
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8670
diff changeset
7175 NULL, FALSE, FALSE, NULL,
7080
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7176 _("Search"), G_CALLBACK(search_by_email_cb),
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7177 _("Cancel"), NULL, gc);
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7178 }
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7179
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7180 static void oscar_show_set_info(GaimPluginAction *action)
7067
c57295414efa [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
7181 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7182 GaimConnection *gc = (GaimConnection *) action->context;
7067
c57295414efa [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
7183 gaim_account_request_change_user_info(gaim_connection_get_account(gc));
c57295414efa [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
7184 }
c57295414efa [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
7185
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7186 static void oscar_show_set_info_icqurl(GaimPluginAction *action)
8576
2bbdbfa1bb83 [gaim-migrate @ 9325]
Ambrose Li <ambrose.li@gmail.com>
parents: 8571
diff changeset
7187 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7188 GaimConnection *gc = (GaimConnection *) action->context;
9809
11fbd5946b13 [gaim-migrate @ 10677]
<oannu@users.sourceforge.net>
parents: 9807
diff changeset
7189 gaim_notify_uri(gc, "http://www.icq.com/whitepages/user_details.php");
8576
2bbdbfa1bb83 [gaim-migrate @ 9325]
Ambrose Li <ambrose.li@gmail.com>
parents: 8571
diff changeset
7190 }
2bbdbfa1bb83 [gaim-migrate @ 9325]
Ambrose Li <ambrose.li@gmail.com>
parents: 8571
diff changeset
7191
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7192 static void oscar_change_pass(GaimPluginAction *action)
7063
4bfe512a4b8c [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
7193 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7194 GaimConnection *gc = (GaimConnection *) action->context;
7063
4bfe512a4b8c [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
7195 gaim_account_request_change_password(gaim_connection_get_account(gc));
4bfe512a4b8c [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
7196 }
4bfe512a4b8c [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
7197
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7198 static void oscar_show_chpassurl(GaimPluginAction *action)
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7199 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7200 GaimConnection *gc = (GaimConnection *) action->context;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
7201 OscarData *od = gc->proto_data;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
7202 gchar *substituted = gaim_strreplace(od->sess->authinfo->chpassurl, "%s", gaim_account_get_username(gaim_connection_get_account(gc)));
6465
bd201d637ff4 [gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents: 6400
diff changeset
7203 gaim_notify_uri(gc, substituted);
5517
1d7b99ac846c [gaim-migrate @ 5916]
Mark Doliner <markdoliner@pidgin.im>
parents: 5498
diff changeset
7204 g_free(substituted);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7205 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7206
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7207 static void oscar_show_imforwardingurl(GaimPluginAction *action)
7026
7828abff32da [gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents: 7023
diff changeset
7208 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7209 GaimConnection *gc = (GaimConnection *) action->context;
7026
7828abff32da [gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents: 7023
diff changeset
7210 gaim_notify_uri(gc, "http://mymobile.aol.com/dbreg/register?action=imf&clientID=1");
7828abff32da [gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents: 7023
diff changeset
7211 }
7828abff32da [gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents: 7023
diff changeset
7212
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7213 static void oscar_set_icon(GaimConnection *gc, const char *iconfile)
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7214 {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
7215 OscarData *od = gc->proto_data;
5844
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
7216 aim_session_t *sess = od->sess;
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7217 FILE *file;
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7218 struct stat st;
5844
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
7219
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
7220 if (iconfile == NULL) {
8363
d46380322c37 [gaim-migrate @ 9088]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8361
diff changeset
7221 aim_ssi_delicon(od->sess);
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
7222 } else if (!stat(iconfile, &st)) {
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7223 char *buf = g_malloc(st.st_size);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7224 file = fopen(iconfile, "rb");
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7225 if (file) {
6052
61348856ae28 [gaim-migrate @ 6502]
Mark Doliner <markdoliner@pidgin.im>
parents: 6051
diff changeset
7226 md5_state_t *state;
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
7227 char md5[16];
9532
32470c5a1d58 [gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 9481
diff changeset
7228 /* XXX - Use g_file_get_contents()? */
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7229 int len = fread(buf, 1, st.st_size, file);
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
7230 fclose(file);
6052
61348856ae28 [gaim-migrate @ 6502]
Mark Doliner <markdoliner@pidgin.im>
parents: 6051
diff changeset
7231 state = g_malloc(sizeof(md5_state_t));
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7232 md5_init(state);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7233 md5_append(state, buf, len);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7234 md5_finish(state, md5);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7235 g_free(state);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7236 aim_ssi_seticon(sess, md5, 16);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7237 } else
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
7238 gaim_debug_error("oscar",
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7239 "Can't open buddy icon file!\n");
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7240 g_free(buf);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7241 } else
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
7242 gaim_debug_error("oscar",
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7243 "Can't stat buddy icon file!\n");
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7244 }
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7245
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7246
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7247 static GList *oscar_actions(GaimPlugin *plugin, gpointer context)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7248 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7249 GaimConnection *gc = (GaimConnection *) context;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
7250 OscarData *od = gc->proto_data;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7251 GList *m = NULL;
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7252 GaimPluginAction *act;
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7253
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7254 act = gaim_plugin_action_new(_("Set User Info..."),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7255 oscar_show_set_info);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7256 m = g_list_append(m, act);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7257
8576
2bbdbfa1bb83 [gaim-migrate @ 9325]
Ambrose Li <ambrose.li@gmail.com>
parents: 8571
diff changeset
7258 if (od->icq) {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7259 act = gaim_plugin_action_new(_("Set User Info (URL)..."),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7260 oscar_show_set_info_icqurl);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7261 m = g_list_append(m, act);
8576
2bbdbfa1bb83 [gaim-migrate @ 9325]
Ambrose Li <ambrose.li@gmail.com>
parents: 8571
diff changeset
7262 }
2bbdbfa1bb83 [gaim-migrate @ 9325]
Ambrose Li <ambrose.li@gmail.com>
parents: 8571
diff changeset
7263
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7264 act = gaim_plugin_action_new(_("Change Password..."),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7265 oscar_change_pass);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7266 m = g_list_append(m, act);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7267
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7268 if (od->sess->authinfo->chpassurl) {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7269 act = gaim_plugin_action_new(_("Change Password (URL)"),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7270 oscar_show_chpassurl);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7271 m = g_list_append(m, act);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7272
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7273 act = gaim_plugin_action_new(_("Configure IM Forwarding (URL)"),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7274 oscar_show_imforwardingurl);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7275 m = g_list_append(m, act);
7026
7828abff32da [gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents: 7023
diff changeset
7276 }
7828abff32da [gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents: 7023
diff changeset
7277
5238
b2c65d7392e0 [gaim-migrate @ 5608]
Mark Doliner <markdoliner@pidgin.im>
parents: 5234
diff changeset
7278 if (!od->icq) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7279 /* AIM actions */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7280 m = g_list_append(m, NULL);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7281
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7282 act = gaim_plugin_action_new(_("Format Screen Name..."),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7283 oscar_show_format_screenname);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7284 m = g_list_append(m, act);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7285
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7286 act = gaim_plugin_action_new(_("Confirm Account"),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7287 oscar_confirm_account);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7288 m = g_list_append(m, act);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7289
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7290 act = gaim_plugin_action_new(_("Display Currently Registered Address"),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7291 oscar_show_email);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7292 m = g_list_append(m, act);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7293
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7294 act = gaim_plugin_action_new(_("Change Currently Registered Address..."),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7295 oscar_show_change_email);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7296 m = g_list_append(m, act);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7297 }
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7298
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7299 m = g_list_append(m, NULL);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7300
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7301 act = gaim_plugin_action_new(_("Show Buddies Awaiting Authorization"),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7302 oscar_show_awaitingauth);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7303 m = g_list_append(m, act);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7304
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7305 m = g_list_append(m, NULL);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7306
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7307 act = gaim_plugin_action_new(_("Search for Buddy by Email..."),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7308 oscar_show_find_email);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7309 m = g_list_append(m, act);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7310
8591
ae42ad1cd127 [gaim-migrate @ 9342]
Mark Doliner <markdoliner@pidgin.im>
parents: 8590
diff changeset
7311 #if 0
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7312 act = gaim_plugin_action_new(_("Search for Buddy by Information"),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7313 show_find_info);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7314 m = g_list_append(m, act);
8591
ae42ad1cd127 [gaim-migrate @ 9342]
Mark Doliner <markdoliner@pidgin.im>
parents: 8590
diff changeset
7315 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7316
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7317 return m;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7318 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7319
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
7320 static void oscar_change_passwd(GaimConnection *gc, const char *old, const char *new)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7321 {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
7322 OscarData *od = gc->proto_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7323
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7324 if (od->icq) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7325 aim_icq_changepasswd(od->sess, new);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7326 } else {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7327 aim_conn_t *conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7328 if (conn) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7329 aim_admin_changepasswd(od->sess, conn, new, old);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7330 } else {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7331 od->chpass = TRUE;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7332 od->oldp = g_strdup(old);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7333 od->newp = g_strdup(new);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7334 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7335 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7336 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7337 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7338
6059
9934c862ca14 [gaim-migrate @ 6509]
John Silvestri <john.silvestri@gmail.com>
parents: 6053
diff changeset
7339 static void oscar_convo_closed(GaimConnection *gc, const char *who)
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
7340 {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
7341 OscarData *od = gc->proto_data;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
7342 struct oscar_direct_im *dim = oscar_direct_im_find(od, who);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
7343
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
7344 if (!dim)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
7345 return;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
7346
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
7347 oscar_direct_im_destroy(od, dim);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
7348 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
7349
9935
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7350 static void
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7351 recent_buddies_cb(const char *name, GaimPrefType type, gpointer value, gpointer data)
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7352 {
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7353 GaimConnection *gc = data;
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7354 OscarData *od = gc->proto_data;
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7355 aim_session_t *sess = od->sess;
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7356 fu32_t presence;
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7357
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7358 presence = aim_ssi_getpresence(sess->ssi.local);
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7359
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7360 if (value) {
9992
d733f96bfc7b [gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents: 9991
diff changeset
7361 /* Based on the packet capture I thought it was the first one */
d733f96bfc7b [gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents: 9991
diff changeset
7362 /* Stu thinks it's the second one. */
d733f96bfc7b [gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents: 9991
diff changeset
7363 /* presence |= 0x00400000; */
9971
8291bafb0025 [gaim-migrate @ 10882]
Daniel Atallah <datallah@pidgin.im>
parents: 9948
diff changeset
7364 presence &= ~0x00020000;
9935
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7365 aim_ssi_setpresence(sess, presence);
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7366 } else {
9992
d733f96bfc7b [gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents: 9991
diff changeset
7367 /* presence &= ~0x00400000; */
9971
8291bafb0025 [gaim-migrate @ 10882]
Daniel Atallah <datallah@pidgin.im>
parents: 9948
diff changeset
7368 presence |= 0x00020000;
9935
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7369 aim_ssi_setpresence(sess, presence);
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7370 }
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7371 }
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7372
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7373 static GaimPluginPrefFrame *
9936
7cfb397cc0d9 [gaim-migrate @ 10828]
Mark Doliner <markdoliner@pidgin.im>
parents: 9935
diff changeset
7374 get_plugin_pref_frame(GaimPlugin *plugin)
7cfb397cc0d9 [gaim-migrate @ 10828]
Mark Doliner <markdoliner@pidgin.im>
parents: 9935
diff changeset
7375 {
9935
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7376 GaimPluginPrefFrame *frame;
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7377 GaimPluginPref *ppref;
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7378
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7379 frame = gaim_plugin_pref_frame_new();
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7380
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7381 ppref = gaim_plugin_pref_new_with_name_and_label("/plugins/prpl/oscar/recent_buddies", _("Use recent buddies group"));
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7382 gaim_plugin_pref_frame_add(frame, ppref);
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7383
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7384 ppref = gaim_plugin_pref_new_with_name_and_label("/plugins/prpl/oscar/show_idle", _("Show how long you have been idle"));
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7385 gaim_plugin_pref_frame_add(frame, ppref);
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7386
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7387 return frame;
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7388 }
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7389
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7390 static GaimPluginProtocolInfo prpl_info =
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7391 {
9308
4ea759d72d37 [gaim-migrate @ 10116]
Sean Egan <seanegan@pidgin.im>
parents: 9295
diff changeset
7392 OPT_PROTO_MAIL_CHECK | OPT_PROTO_IM_IMAGE,
9475
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7393 NULL, /* user_splits */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7394 NULL, /* protocol_options */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7395 {"jpeg,gif,bmp,ico", 48, 48, 50, 50, GAIM_ICON_SCALE_DISPLAY}, /* icon_spec */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7396 oscar_list_icon, /* list_icon */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7397 oscar_list_emblems, /* list_emblems */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7398 oscar_status_text, /* status_text */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7399 oscar_tooltip_text, /* tooltip_text */
9973
e163f8e7e8a4 [gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents: 9972
diff changeset
7400 oscar_status_types, /* status_types */
9475
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7401 oscar_blist_node_menu, /* blist_node_menu */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7402 oscar_chat_info, /* chat_info */
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
7403 oscar_chat_info_defaults, /* chat_info_defaults */
9475
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7404 oscar_login, /* login */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7405 oscar_close, /* close */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7406 oscar_send_im, /* send_im */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7407 oscar_set_info, /* set_info */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7408 oscar_send_typing, /* send_typing */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7409 oscar_get_info, /* get_info */
9973
e163f8e7e8a4 [gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents: 9972
diff changeset
7410 oscar_set_status, /* set_status */
9475
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7411 oscar_set_idle, /* set_idle */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7412 oscar_change_passwd, /* change_passwd */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7413 oscar_add_buddy, /* add_buddy */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7414 oscar_add_buddies, /* add_buddies */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7415 oscar_remove_buddy, /* remove_buddy */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7416 oscar_remove_buddies, /* remove_buddies */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7417 oscar_add_permit, /* add_permit */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7418 oscar_add_deny, /* add_deny */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7419 oscar_rem_permit, /* rem_permit */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7420 oscar_rem_deny, /* rem_deny */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7421 oscar_set_permit_deny, /* set_permit_deny */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7422 oscar_warn, /* warn */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7423 oscar_join_chat, /* join_chat */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7424 NULL, /* reject_chat */
9973
e163f8e7e8a4 [gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents: 9972
diff changeset
7425 oscar_get_chat_name, /* get_chat_name */
9475
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7426 oscar_chat_invite, /* chat_invite */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7427 oscar_chat_leave, /* chat_leave */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7428 NULL, /* chat_whisper */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7429 oscar_send_chat, /* chat_send */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7430 oscar_keepalive, /* keepalive */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7431 NULL, /* register_user */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7432 NULL, /* get_cb_info */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7433 NULL, /* get_cb_away */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7434 #ifndef NOSSI
9475
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7435 oscar_alias_buddy, /* alias_buddy */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7436 oscar_move_buddy, /* group_buddy */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7437 oscar_rename_group, /* rename_group */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7438 #else
9475
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7439 NULL, /* alias_buddy */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7440 NULL, /* group_buddy */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7441 NULL, /* rename_group */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7442 #endif
9475
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7443 NULL, /* buddy_free */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7444 oscar_convo_closed, /* convo_closed */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7445 NULL, /* normalize */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7446 oscar_set_icon, /* set_buddy_icon */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7447 NULL, /* remove_group */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7448 NULL, /* get_cb_real_name */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7449 NULL, /* set_chat_topic */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7450 NULL, /* find_blist_chat */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7451 NULL, /* roomlist_get_list */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7452 NULL, /* roomlist_cancel */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7453 NULL, /* roomlist_expand_category */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7454 oscar_can_receive_file, /* can_receive_file */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7455 oscar_send_file /* send_file */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7456 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7457
9935
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7458 static GaimPluginUiInfo prefs_info = {
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7459 get_plugin_pref_frame
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7460 };
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7461
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7462 static GaimPluginInfo info =
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7463 {
9943
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9942
diff changeset
7464 GAIM_PLUGIN_MAGIC,
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9942
diff changeset
7465 GAIM_MAJOR_VERSION,
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9942
diff changeset
7466 GAIM_MINOR_VERSION,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7467 GAIM_PLUGIN_PROTOCOL, /**< type */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7468 NULL, /**< ui_requirement */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7469 0, /**< flags */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7470 NULL, /**< dependencies */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7471 GAIM_PRIORITY_DEFAULT, /**< priority */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7472
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7473 "prpl-oscar", /**< id */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7474 "AIM/ICQ", /**< name */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7475 VERSION, /**< version */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7476 /** summary */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7477 N_("AIM/ICQ Protocol Plugin"),
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7478 /** description */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7479 N_("AIM/ICQ Protocol Plugin"),
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7480 NULL, /**< author */
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
7481 GAIM_WEBSITE, /**< homepage */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7482
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7483 NULL, /**< load */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7484 NULL, /**< unload */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7485 NULL, /**< destroy */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7486
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7487 NULL, /**< ui_info */
8993
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8985
diff changeset
7488 &prpl_info, /**< extra_info */
9935
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7489 &prefs_info, /**< prefs_info */
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7490 oscar_actions
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7491 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7492
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7493 static void
5920
963bfdefee02 [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5917
diff changeset
7494 init_plugin(GaimPlugin *plugin)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7495 {
5638
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
7496 GaimAccountOption *option;
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
7497
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
7498 option = gaim_account_option_string_new(_("Auth host"), "server", FAIM_LOGIN_SERVER);
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
7499 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
7500
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
7501 option = gaim_account_option_int_new(_("Auth port"), "port", FAIM_LOGIN_PORT);
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
7502 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
7503
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
7504 option = gaim_account_option_string_new(_("Encoding"), "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
7505 prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7506
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7507 my_protocol = plugin;
9935
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7508
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7509 gaim_prefs_add_none("/plugins/prpl/oscar");
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7510 gaim_prefs_add_bool("/plugins/prpl/oscar/recent_buddies", FALSE);
9942
6cba898c9db1 [gaim-migrate @ 10834]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9936
diff changeset
7511 gaim_prefs_add_bool("/plugins/prpl/oscar/show_idle", FALSE);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7512 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7513
5920
963bfdefee02 [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5917
diff changeset
7514 GAIM_INIT_PLUGIN(oscar, init_plugin, info);

mercurial