src/protocols/oscar/oscar.c

Wed, 17 Nov 2004 01:32:06 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Wed, 17 Nov 2004 01:32:06 +0000
changeset 10197
28d80bc4a51d
parent 10196
d87d0b191feb
child 10198
d585aa9a3a15
permissions
-rw-r--r--

[gaim-migrate @ 11314]
More status fixes. Oscar kind of works... you can set yourself away,
invisible and available, but you can't choose the message for away,
can't choose an available message, and invisible only seems to work
the first time.

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\", "
10096
2dba52b4a949 [gaim-migrate @ 11118]
Mark Doliner <markdoliner@pidgin.im>
parents: 10087
diff changeset
388 "attempting to convert to UTF-8 anyway\n", encoding);
9595
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 */
10098
364dcec11abd [gaim-migrate @ 11120]
Mark Doliner <markdoliner@pidgin.im>
parents: 10097
diff changeset
502 if (oscar_charset_check(from) == AIM_CHARSET_ASCII) {
10097
cdf1f787073f [gaim-migrate @ 11119]
Calle Englund <notcalle@users.sourceforge.net>
parents: 10096
diff changeset
503 *msg = g_convert(from, strlen(from), "ASCII", "UTF-8", NULL, &msglen, NULL);
10098
364dcec11abd [gaim-migrate @ 11120]
Mark Doliner <markdoliner@pidgin.im>
parents: 10097
diff changeset
504 *charset = AIM_CHARSET_ASCII;
9830
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
10097
cdf1f787073f [gaim-migrate @ 11119]
Calle Englund <notcalle@users.sourceforge.net>
parents: 10096
diff changeset
535 /*
cdf1f787073f [gaim-migrate @ 11119]
Calle Englund <notcalle@users.sourceforge.net>
parents: 10096
diff changeset
536 * XXX - We need a way to only attempt to convert if we KNOW "from"
cdf1f787073f [gaim-migrate @ 11119]
Calle Englund <notcalle@users.sourceforge.net>
parents: 10096
diff changeset
537 * can be converted to "charsetstr"
cdf1f787073f [gaim-migrate @ 11119]
Calle Englund <notcalle@users.sourceforge.net>
parents: 10096
diff changeset
538 */
10039
cb0a6cbd0023 [gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents: 10022
diff changeset
539 *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
540 if (*msg != NULL) {
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
541 *charset = AIM_CHARSET_CUSTOM;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
542 *charsubset = 0x0000;
10039
cb0a6cbd0023 [gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents: 10022
diff changeset
543 *msglen_int = msglen;
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
544 return;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
545 }
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
546
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
547 /*
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
548 * Nothing else worked, so send as UCS-2BE.
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
549 */
10039
cb0a6cbd0023 [gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents: 10022
diff changeset
550 *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
551 if (*msg != NULL) {
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
552 *charset = AIM_CHARSET_UNICODE;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
553 *charsubset = 0x0000;
10039
cb0a6cbd0023 [gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents: 10022
diff changeset
554 *msglen_int = msglen;
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
555 return;
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
9908
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
558 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
559 g_error_free(err);
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
560
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
561 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
562 *msg = g_strdup(from);
10039
cb0a6cbd0023 [gaim-migrate @ 10998]
Rian Hunter <chrono86@users.sourceforge.net>
parents: 10022
diff changeset
563 *msglen_int = strlen(*msg);
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
564 *charset = AIM_CHARSET_ASCII;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
565 *charsubset = 0x0000;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
566 return;
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
567 }
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
568
9407
51d14211393c [gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents: 9381
diff changeset
569 gchar *oscar_caps_to_string(guint caps)
8701
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 GString *str;
51d14211393c [gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents: 9381
diff changeset
572 gchar *tmp;
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
573 guint bit = 1;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
574
9407
51d14211393c [gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents: 9381
diff changeset
575 str = g_string_new("");
51d14211393c [gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents: 9381
diff changeset
576
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
577 if (!caps) {
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
578 return NULL;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
579 } else while (bit <= AIM_CAPS_LAST) {
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
580 if (bit & caps) {
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
581 switch (bit) {
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
582 case AIM_CAPS_BUDDYICON:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
583 tmp = _("Buddy Icon");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
584 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
585 case AIM_CAPS_TALK:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
586 tmp = _("Voice");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
587 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
588 case AIM_CAPS_DIRECTIM:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
589 tmp = _("AIM Direct IM");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
590 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
591 case AIM_CAPS_CHAT:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
592 tmp = _("Chat");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
593 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
594 case AIM_CAPS_GETFILE:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
595 tmp = _("Get File");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
596 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
597 case AIM_CAPS_SENDFILE:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
598 tmp = _("Send File");
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_GAMES:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
601 case AIM_CAPS_GAMES2:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
602 tmp = _("Games");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
603 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
604 case AIM_CAPS_ADDINS:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
605 tmp = _("Add-Ins");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
606 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
607 case AIM_CAPS_SENDBUDDYLIST:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
608 tmp = _("Send Buddy List");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
609 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
610 case AIM_CAPS_ICQ_DIRECT:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
611 tmp = _("ICQ Direct Connect");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
612 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
613 case AIM_CAPS_APINFO:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
614 tmp = _("AP User");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
615 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
616 case AIM_CAPS_ICQRTF:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
617 tmp = _("ICQ RTF");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
618 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
619 case AIM_CAPS_EMPTY:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
620 tmp = _("Nihilist");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
621 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
622 case AIM_CAPS_ICQSERVERRELAY:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
623 tmp = _("ICQ Server Relay");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
624 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
625 case AIM_CAPS_ICQUTF8OLD:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
626 tmp = _("Old ICQ UTF8");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
627 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
628 case AIM_CAPS_TRILLIANCRYPT:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
629 tmp = _("Trillian Encryption");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
630 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
631 case AIM_CAPS_ICQUTF8:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
632 tmp = _("ICQ UTF8");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
633 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
634 case AIM_CAPS_HIPTOP:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
635 tmp = _("Hiptop");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
636 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
637 case AIM_CAPS_SECUREIM:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
638 tmp = _("Security Enabled");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
639 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
640 case AIM_CAPS_VIDEO:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
641 tmp = _("Video Chat");
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 /* Not actually sure about this one... WinAIM doesn't show anything */
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
644 case AIM_CAPS_ICHATAV:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
645 tmp = _("iChat AV");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
646 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
647 case AIM_CAPS_LIVEVIDEO:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
648 tmp = _("Live Video");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
649 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
650 case AIM_CAPS_CAMERA:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
651 tmp = _("Camera");
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
652 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
653 default:
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
654 tmp = NULL;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
655 break;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
656 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
657 if (tmp)
9532
32470c5a1d58 [gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 9481
diff changeset
658 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
659 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
660 bit <<= 1;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
661 }
9407
51d14211393c [gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents: 9381
diff changeset
662
51d14211393c [gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents: 9381
diff changeset
663 return g_string_free(str, FALSE);
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
664 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
665
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
666 static char *oscar_icqstatus(int state) {
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
667 /* 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
668 if (state & AIM_ICQ_STATE_CHAT)
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
669 return g_strdup_printf(_("Free For Chat"));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
670 else if (state & AIM_ICQ_STATE_DND)
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
671 return g_strdup_printf(_("Do Not Disturb"));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
672 else if (state & AIM_ICQ_STATE_OUT)
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
673 return g_strdup_printf(_("Not Available"));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
674 else if (state & AIM_ICQ_STATE_BUSY)
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
675 return g_strdup_printf(_("Occupied"));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
676 else if (state & AIM_ICQ_STATE_AWAY)
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
677 return g_strdup_printf(_("Away"));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
678 else if (state & AIM_ICQ_STATE_WEBAWARE)
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
679 return g_strdup_printf(_("Web Aware"));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
680 else if (state & AIM_ICQ_STATE_INVISIBLE)
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
681 return g_strdup_printf(_("Invisible"));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
682 else
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
683 return g_strdup_printf(_("Online"));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
684 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
685
9973
e163f8e7e8a4 [gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents: 9972
diff changeset
686 static void
e163f8e7e8a4 [gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents: 9972
diff changeset
687 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
688 {
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
689 gchar *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 if (value && value[0] && (utf8 = gaim_utf8_try_convert(value))) {
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
692 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
693 g_free(utf8);
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
694 }
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
695 }
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
696
9973
e163f8e7e8a4 [gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents: 9972
diff changeset
697 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
698 {
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
699 OscarData *od;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
700 GaimAccount *account;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
701 GaimPresence *presence;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
702 GaimPresence *buddy_presence;
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
703 GaimGroup *g = NULL;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
704 struct buddyinfo *bi = NULL;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
705 char *tmp;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
706
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
707 od = gc->proto_data;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
708 account = gaim_connection_get_account(gc);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
709 presence = gaim_account_get_presence(account);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
710 buddy_presence = gaim_buddy_get_presence(b);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
711
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
712 if ((str == NULL) || (newline == NULL) || ((b == NULL) && (userinfo == NULL)))
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
713 return;
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
714
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
715 if (userinfo == NULL)
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
716 userinfo = aim_locate_finduserinfo(od->sess, b->name);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
717
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
718 if (b == NULL)
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
719 b = gaim_find_buddy(account, userinfo->sn);
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
720
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
721 if (b != NULL)
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
722 g = gaim_find_buddys_group(b);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
723
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
724 if (userinfo != NULL)
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
725 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
726
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
727 if (b != NULL) {
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
728 if (gaim_presence_is_online(buddy_presence)) {
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
729 if (aim_sn_is_icq(b->name)) {
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
730 tmp = oscar_icqstatus((b->uc & 0xffff0000) >> 16);
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
731 oscar_string_append(str, newline, _("Status"), tmp);
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
732 g_free(tmp);
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
733 }
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
734 } else {
9625
f2cda8836eb9 [gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents: 9620
diff changeset
735 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
736 if (aim_ssi_waitingforauth(od->sess->ssi.local, tmp, b->name))
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
737 oscar_string_append(str, newline, _("Status"), _("Not Authorized"));
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
738 else
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
739 oscar_string_append(str, newline, _("Status"), _("Offline"));
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
740 }
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
741 }
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
742
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
743 if ((bi != NULL) && (bi->ipaddr != 0)) {
9625
f2cda8836eb9 [gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents: 9620
diff changeset
744 tmp = g_strdup_printf("%hhu.%hhu.%hhu.%hhu",
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
745 (bi->ipaddr & 0xff000000) >> 24,
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
746 (bi->ipaddr & 0x00ff0000) >> 16,
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
747 (bi->ipaddr & 0x0000ff00) >> 8,
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
748 (bi->ipaddr & 0x000000ff));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
749 oscar_string_append(str, newline, _("IP Address"), tmp);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
750 g_free(tmp);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
751 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
752
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
753 if ((userinfo != NULL) && (userinfo->capabilities != 0)) {
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
754 tmp = oscar_caps_to_string(userinfo->capabilities);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
755 oscar_string_append(str, newline, _("Capabilities"), tmp);
9407
51d14211393c [gaim-migrate @ 10222]
Mark Doliner <markdoliner@pidgin.im>
parents: 9381
diff changeset
756 g_free(tmp);
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
757 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
758
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
759 if ((b != NULL) && (b->name != NULL) && (g != NULL) && (g->name != NULL)) {
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
760 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
761 if (tmp != NULL) {
9625
f2cda8836eb9 [gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents: 9620
diff changeset
762 char *tmp2 = g_markup_escape_text(tmp, strlen(tmp));
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
763 g_free(tmp);
9625
f2cda8836eb9 [gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents: 9620
diff changeset
764 oscar_string_append(str, newline, _("Buddy Comment"), tmp2);
f2cda8836eb9 [gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents: 9620
diff changeset
765 g_free(tmp2);
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
766 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
767 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
768
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
769 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
770 tmp = g_markup_escape_text(bi->availmsg, strlen(bi->availmsg));
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
771 oscar_string_append(str, newline, _("Available"), tmp);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
772 g_free(tmp);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
773 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
774 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
775
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
776 static char *extract_name(const char *name) {
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
777 char *tmp, *x;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
778 int i, j;
4120
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
779
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
780 if (!name)
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
781 return NULL;
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
782
4120
a803503bbc7a [gaim-migrate @ 4337]
Rob Flynn <gaim@robflynn.com>
parents: 4111
diff changeset
783 x = strchr(name, '-');
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
784
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
785 if (!x) return NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
786 x = strchr(++x, '-');
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
787 if (!x) return NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
788 tmp = g_strdup(++x);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
789
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
790 for (i = 0, j = 0; x[i]; i++) {
2361
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
791 char hex[3];
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
792 if (x[i] != '%') {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
793 tmp[j++] = x[i];
2361
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
794 continue;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
795 }
2361
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
796 strncpy(hex, x + ++i, 2); hex[2] = 0;
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
797 i++;
73a8ac410e85 [gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2357
diff changeset
798 tmp[j++] = strtol(hex, NULL, 16);
2086
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
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
801 tmp[j] = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
802 return tmp;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
803 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
804
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
805 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
806 GSList *g = ((OscarData *)gc->proto_data)->oscar_chats;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
807 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
808
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
809 while (g) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
810 c = (struct chat_connection *)g->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
811 if (c->id == id)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
812 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
813 g = g->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
814 c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
815 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
816
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
817 return c;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
818 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
819
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
820 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
821 aim_conn_t *conn) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
822 GSList *g = ((OscarData *)gc->proto_data)->oscar_chats;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
823 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
824
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
825 while (g) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
826 c = (struct chat_connection *)g->data;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
827 if (c->conn == conn)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
828 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
829 g = g->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
830 c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
831 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
832
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
833 return c;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
834 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
835
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
836 static struct chat_connection *find_oscar_chat_by_conv(GaimConnection *gc,
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
837 GaimConversation *conv) {
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
838 GSList *g = ((OscarData *)gc->proto_data)->oscar_chats;
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
839 struct chat_connection *c = NULL;
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
840
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
841 while (g) {
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
842 c = (struct chat_connection *)g->data;
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
843 if (c->conv == conv)
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
844 break;
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
845 g = g->next;
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
846 c = NULL;
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
847 }
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
848
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
849 return c;
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
850 }
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
851
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
852 /*****************************************************************************
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
853 * Begin scary direct im stuff
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
854 *****************************************************************************/
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 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
857 GSList *d = od->direct_ims;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
858 struct oscar_direct_im *m = NULL;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
859
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
860 while (d) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
861 m = (struct oscar_direct_im *)d->data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
862 if (!aim_sncmp(who, m->name))
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
863 return m;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
864 d = d->next;
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
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
867 return NULL;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
868 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
869
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
870 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
871 {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
872 gaim_debug_info("oscar",
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
873 "destroying Direct IM for %s.\n", dim->name);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
874
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
875 od->direct_ims = g_slist_remove(od->direct_ims, dim);
8978
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
876 if (dim->gpc_pend) {
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
877 dim->killme = TRUE;
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
878 return;
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
879 }
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
880 if (dim->watcher)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
881 gaim_input_remove(dim->watcher);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
882 if (dim->conn) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
883 aim_conn_close(dim->conn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
884 aim_conn_kill(od->sess, &dim->conn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
885 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
886 g_free(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
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
889 /* 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
890 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
891 {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
892 GaimConversation *conv;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
893 char buf[256];
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
894
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
895 gaim_debug_info("oscar",
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
896 "%s disconnected Direct IM.\n", dim->name);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
897
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
898 if (dim->connected)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
899 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
900 else
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
901 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
902
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
903 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
904 if (conv) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
905 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
906 gaim_conversation_update_progress(conv, 0);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
907 } else {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
908 gaim_notify_error(dim->gc, NULL, _("Direct Connect failed"), buf);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
909 }
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 oscar_direct_im_destroy(od, dim);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
912
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
913 return;
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
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
916 /* 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
917 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
918 {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
919 GaimConnection *gc = sess->aux_data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
920 OscarData *od = (OscarData *)gc->proto_data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
921 struct oscar_direct_im *dim;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
922 char *sn;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
923
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
924 sn = g_strdup(aim_odc_getsn(conn));
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
925 dim = oscar_direct_im_find(od, sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
926 oscar_direct_im_disconnect(od, dim);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
927 g_free(sn);
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
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
930 static void destroy_direct_im_request(struct ask_direct *d) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
931 gaim_debug_info("oscar", "Freeing DirectIM prompts.\n");
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 g_free(d->sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
934 g_free(d);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
935 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
936
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
937 /* 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
938 static void oscar_odc_callback(gpointer data, gint source, GaimInputCondition condition) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
939 struct oscar_direct_im *dim = data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
940 GaimConnection *gc = dim->gc;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
941 OscarData *od = gc->proto_data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
942 GaimConversation *conv;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
943 char buf[256];
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
944 struct sockaddr name;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
945 socklen_t name_len = 1;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
946
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
947 g_return_if_fail(gc != NULL);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
948
8978
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
949 dim->gpc_pend = FALSE;
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
950 if (dim->killme) {
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
951 oscar_direct_im_destroy(od, dim);
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
952 return;
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
953 }
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
954
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
955 if (!g_list_find(gaim_connections_get_all(), gc)) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
956 oscar_direct_im_destroy(od, dim);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
957 return;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
958 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
959
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
960 if (source < 0) {
8984
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
961 if (dim->donttryagain) {
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
962 oscar_direct_im_disconnect(od, dim);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
963 return;
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
964 } else {
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
965 fu8_t cookie[8];
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
966 char *who = g_strdup(dim->name);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
967 const char *tmp = aim_odc_getcookie(dim->conn);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
968
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
969 memcpy(cookie, tmp, 8);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
970 oscar_direct_im_destroy(od, dim);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
971 oscar_direct_im_initiate(gc, who, cookie);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
972 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
973 g_free(who);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
974 return;
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
975 }
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
976 }
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 dim->conn->fd = source;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
979 aim_conn_completeconnect(od->sess, dim->conn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
980 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
981
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
982 /* 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
983 /* Is this really needed? */
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
984 if (getpeername(source, &name, &name_len) == 0) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
985 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
986 dim->connected = TRUE;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
987 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
988 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
989 } else {
8984
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
990 if (dim->donttryagain) {
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
991 oscar_direct_im_disconnect(od, dim);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
992 return;
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
993 } else {
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
994 fu8_t cookie[8];
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
995 char *who = g_strdup(dim->name);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
996 const char *tmp = aim_odc_getcookie(dim->conn);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
997
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
998 memcpy(cookie, tmp, 8);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
999 oscar_direct_im_destroy(od, dim);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1000 oscar_direct_im_initiate(gc, who, cookie);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1001 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
1002 g_free(who);
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1003 return;
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1004 }
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1005 }
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1006
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1007
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1008 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1009
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1010 static void accept_direct_im_request(struct ask_direct *d) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1011 GaimConnection *gc = d->gc;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1012 OscarData *od;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1013 struct oscar_direct_im *dim;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1014 char *host; int port = 5190;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1015 int i, rc;
8982
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1016 char *tmp;
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1017 GaimConversation *conv;
8971
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 if (!g_list_find(gaim_connections_get_all(), gc)) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1020 destroy_direct_im_request(d);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1021 return;
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
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1024 od = (OscarData *)gc->proto_data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1025 gaim_debug_info("oscar", "Accepted DirectIM.\n");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1026
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1027 dim = oscar_direct_im_find(od, d->sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1028 if (dim && dim->connected) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1029 destroy_direct_im_request(d); /* 40 */ /* what does that 40 mean? */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1030 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
1031 return;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1032 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1033 dim = g_new0(struct oscar_direct_im, 1);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1034 dim->gc = d->gc;
8984
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
1035 dim->donttryagain = d->donttryagain;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1036 g_snprintf(dim->name, sizeof dim->name, "%s", d->sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1037
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1038 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
1039 od->direct_ims = g_slist_append(od->direct_ims, dim);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1040 if (!dim->conn) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1041 oscar_direct_im_disconnect(od, dim);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1042 destroy_direct_im_request(d);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1043 return;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1044 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1045
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1046 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
1047 gaim_odc_incoming, 0);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1048 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
1049 gaim_odc_typing, 0);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1050 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
1051 gaim_odc_update_ui, 0);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1052
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1053 gaim_debug_info("oscar", "ip is %s.\n", d->ip);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1054 for (i = 0; i < (int)strlen(d->ip); i++) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1055 if (d->ip[i] == ':') {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1056 port = atoi(&(d->ip[i+1]));
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1057 break;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1058 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1059 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1060 host = g_strndup(d->ip, i);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1061 dim->conn->status |= AIM_CONN_STATUS_INPROGRESS;
8978
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
1062 dim->gpc_pend = TRUE;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1063 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
1064
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1065 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
1066 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
1067 port);
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1068 gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, time(NULL));
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1069 g_free(tmp);
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1070
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1071 g_free(host);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1072 if (rc < 0) {
8978
38af990ff584 [gaim-migrate @ 9752]
Tim Ringenbach <marv@pidgin.im>
parents: 8971
diff changeset
1073 dim->gpc_pend = FALSE;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1074 oscar_direct_im_disconnect(od, dim);
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 return;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1077 }
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 destroy_direct_im_request(d);
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 return;
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
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1084 /*
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1085 * 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
1086 */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1087 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
1088 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1089 OscarData *od = (OscarData *)gc->proto_data;
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
1090 GaimConversation *conv;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1091 struct oscar_direct_im *dim;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1092 char buf[256];
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1093 char *sn;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1094 va_list ap;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1095 aim_conn_t *newconn, *listenerconn;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1096
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1097 va_start(ap, fr);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1098 newconn = va_arg(ap, aim_conn_t *);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1099 listenerconn = va_arg(ap, aim_conn_t *);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1100 va_end(ap);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1101
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1102 aim_conn_close(listenerconn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1103 aim_conn_kill(sess, &listenerconn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1104
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1105 sn = g_strdup(aim_odc_getsn(newconn));
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 gaim_debug_info("oscar",
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1108 "DirectIM: initiate success to %s\n", sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1109 dim = oscar_direct_im_find(od, sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1110
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1111 conv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1112 gaim_input_remove(dim->watcher);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1113 dim->conn = newconn;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1114 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
1115 dim->connected = TRUE;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1116 g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1117 g_free(sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1118 gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_SYSTEM, time(NULL));
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 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
1121 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
1122 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
1123
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1124 return 1;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1125 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1126
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 * 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
1129 * 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
1130 * nasty, you sicko.
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1131 */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1132 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
1133 va_list ap;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1134 char *sn;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1135 double percent;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1136 GaimConnection *gc = sess->aux_data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1137 OscarData *od = (OscarData *)gc->proto_data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1138 GaimConversation *c;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1139 struct oscar_direct_im *dim;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1140
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1141 va_start(ap, fr);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1142 sn = va_arg(ap, char *);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1143 percent = va_arg(ap, double);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1144 va_end(ap);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1145
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1146 if (!sn || !(dim = oscar_direct_im_find(od, sn)))
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1147 return 1;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1148 if (dim->watcher) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1149 gaim_input_remove(dim->watcher); /* Otherwise, the callback will callback */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1150 /* 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
1151 dim->watcher = 0;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1152 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1153
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1154 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
1155 if (c != NULL)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1156 gaim_conversation_update_progress(c, percent);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1157 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1158 oscar_callback, dim->conn);
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 return 1;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1161 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1162
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 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
1165 * 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
1166 * data chunks (images) appended to it.
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1167 *
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1168 * 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
1169 * 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
1170 * 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
1171 * 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
1172 * 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
1173 * create the img store using the given data.
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1174 *
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1175 * For somewhat easy reference, here's a sample message
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1176 * (without the whitespace and asterisks):
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1177 *
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1178 * <HTML><BODY BGCOLOR="#ffffff">
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1179 * <FONT LANG="0">
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1180 * This is a really stupid picture:<BR>
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1181 * <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
1182 * Yeah it is<BR>
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1183 * Here is another one:<BR>
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1184 * <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
1185 * </FONT>
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1186 * </BODY></HTML>
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1187 * <BINARY>
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1188 * <DATA ID="1" SIZE="9894">datadatadatadata</DATA>
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1189 * <DATA ID="2" SIZE="65978">datadatadatadata</DATA>
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1190 * </BINARY>
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1191 */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1192 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
1193 GaimConnection *gc = sess->aux_data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1194 GaimConvImFlags imflags = 0;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1195 gchar *utf8;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1196 GString *newmsg = g_string_new("");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1197 GSList *images = NULL;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1198 va_list ap;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1199 const char *sn, *msg, *msgend, *binary;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1200 size_t len;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1201 int encoding, isawaymsg;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1202
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1203 va_start(ap, fr);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1204 sn = va_arg(ap, const char *);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1205 msg = va_arg(ap, const char *);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1206 len = va_arg(ap, size_t);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1207 encoding = va_arg(ap, int);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1208 isawaymsg = va_arg(ap, int);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1209 va_end(ap);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1210 msgend = msg + len;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1211
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1212 gaim_debug_info("oscar",
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1213 "Got DirectIM message from %s\n", sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1214
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1215 if (isawaymsg)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1216 imflags |= GAIM_CONV_IM_AUTO_RESP;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1217
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1218 /* message has a binary trailer */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1219 if ((binary = gaim_strcasestr(msg, "<binary>"))) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1220 GData *attribs;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1221 const char *tmp, *start, *end, *last = NULL;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1222
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1223 tmp = msg;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1224
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1225 /* for each valid image tag... */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1226 while (gaim_markup_find_tag("img", tmp, &start, &end, &attribs)) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1227 const char *id, *src, *datasize;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1228 const char *tag = NULL, *data = NULL;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1229 size_t size;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1230 int imgid = 0;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1231
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1232 /* update the location of the last img tag */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1233 last = end;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1234
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1235 /* grab attributes */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1236 id = g_datalist_get_data(&attribs, "id");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1237 src = g_datalist_get_data(&attribs, "src");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1238 datasize = g_datalist_get_data(&attribs, "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 id & datasize, build the data tag */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1241 if (id && datasize)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1242 tag = g_strdup_printf("<data id=\"%s\" size=\"%s\">", id, datasize);
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 /* if we have a tag, find the start of the data */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1245 if (tag && (data = gaim_strcasestr(binary, tag)))
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1246 data += strlen(tag);
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 /* check the data is here and store it */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1249 if (data + (size = atoi(datasize)) <= msgend)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1250 imgid = gaim_imgstore_add(data, size, src);
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 /*
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1253 * 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
1254 * The hardcoded "us-ascii" value REALLY needs to be removed.
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1255 */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1256 /* if we have a stored image... */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1257 if (imgid) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1258 /* append the message up to the tag */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1259 utf8 = oscar_encoding_to_utf8("us-ascii", tmp, start - tmp);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1260 if (utf8 != NULL) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1261 newmsg = g_string_append(newmsg, utf8);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1262 g_free(utf8);
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
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1265 /* write the new image tag */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1266 g_string_append_printf(newmsg, "<IMG ID=\"%d\">", imgid);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1267
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1268 /* and record the image number */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1269 images = g_slist_append(images, GINT_TO_POINTER(imgid));
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1270 } else {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1271 /* otherwise, copy up to the end of the tag */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1272 utf8 = oscar_encoding_to_utf8("us-ascii", tmp, (end + 1) - tmp);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1273 if (utf8 != NULL) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1274 newmsg = g_string_append(newmsg, utf8);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1275 g_free(utf8);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1276 }
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
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1279 /* clear the attribute list */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1280 g_datalist_clear(&attribs);
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 /* continue from the end of the tag */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1283 tmp = end + 1;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1284 }
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 /* append any remaining message data (without the > :-) */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1287 if (last++ && (last < binary))
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1288 newmsg = g_string_append_len(newmsg, last, binary - last);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1289
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1290 /* set the flag if we caught any images */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1291 if (images)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1292 imflags |= GAIM_CONV_IM_IMAGES;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1293 } else {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1294 g_string_append_len(newmsg, msg, len);
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
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1297 /* 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
1298 serv_got_im(gc, sn, newmsg->str, imflags, time(NULL));
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1299
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1300 /* free up the message */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1301 g_string_free(newmsg, TRUE);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1302
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1303 /* unref any images we allocated */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1304 if (images) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1305 GSList *tmp;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1306 int 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 for (tmp = images; tmp != NULL; tmp = tmp->next) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1309 id = GPOINTER_TO_INT(tmp->data);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1310 gaim_imgstore_unref(id);
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
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1313 g_slist_free(images);
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
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1316 return 1;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1317 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1318
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1319 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
1320 va_list ap;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1321 char *sn;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1322 int typing;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1323 GaimConnection *gc = sess->aux_data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1324
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1325 va_start(ap, fr);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1326 sn = va_arg(ap, char *);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1327 typing = va_arg(ap, int);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1328 va_end(ap);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1329
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1330 if (typing == 0x0002) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1331 /* 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
1332 gaim_debug_info("oscar",
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1333 "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
1334 serv_got_typing(gc, sn, 0, GAIM_TYPING);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1335 } else if (typing == 0x0001)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1336 serv_got_typing(gc, sn, 0, GAIM_TYPED);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1337 else
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1338 serv_got_typing_stopped(gc, sn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1339 return 1;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1340 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1341
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1342 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
1343 char *buf;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1344 size_t len;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1345 int ret;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1346 GString *msg = g_string_new("<HTML><BODY>");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1347 GString *data = g_string_new("</BODY></HTML><BINARY>");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1348 GData *attribs;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1349 const char *start, *end, *last;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1350 int oscar_id = 0;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1351
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1352 last = message;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1353
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1354 /* for each valid IMG tag... */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1355 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
1356 GaimStoredImage *image = NULL;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1357 const char *id;
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 if (start - last) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1360 g_string_append_len(msg, last, start - last);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1361 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1362
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1363 id = g_datalist_get_data(&attribs, "id");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1364
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1365 /* ... if it refers to a valid gaim image ... */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1366 if (id && (image = gaim_imgstore_get(atoi(id)))) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1367 /* ... append the message from start to the tag ... */
9126
b95adbd031d5 [gaim-migrate @ 9903]
Mark Doliner <markdoliner@pidgin.im>
parents: 9070
diff changeset
1368 unsigned long size = gaim_imgstore_get_size(image);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1369 const char *filename = gaim_imgstore_get_filename(image);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1370 gpointer imgdata = gaim_imgstore_get_data(image);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1371
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1372 oscar_id++;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1373
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1374 /* ... insert a new img tag with the oscar id ... */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1375 if (filename)
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 SRC=\"%s\" ID=\"%d\" DATASIZE=\"%lu\">",
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1378 filename, oscar_id, size);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1379 else
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1380 g_string_append_printf(msg,
9126
b95adbd031d5 [gaim-migrate @ 9903]
Mark Doliner <markdoliner@pidgin.im>
parents: 9070
diff changeset
1381 "<IMG ID=\"%d\" DATASIZE=\"%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
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1384 /* ... and append the data to the binary section ... */
9126
b95adbd031d5 [gaim-migrate @ 9903]
Mark Doliner <markdoliner@pidgin.im>
parents: 9070
diff changeset
1385 g_string_append_printf(data, "<DATA ID=\"%d\" SIZE=\"%lu\">",
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1386 oscar_id, size);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1387 data = g_string_append_len(data, imgdata, size);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1388 data = g_string_append(data, "</DATA>");
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 /* If the tag is invalid, skip it, thus no else here */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1391
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1392 g_datalist_clear(&attribs);
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 /* continue from the end of the tag */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1395 last = end + 1;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1396 }
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 /* append any remaining message data (without the > :-) */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1399 if (last && *last)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1400 msg = g_string_append(msg, last);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1401
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1402 /* if we inserted any images in the binary section, append it */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1403 if (oscar_id) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1404 msg = g_string_append_len(msg, data->str, data->len);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1405 msg = g_string_append(msg, "</BINARY>");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1406 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1407
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1408 len = msg->len;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1409 buf = msg->str;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1410 g_string_free(msg, FALSE);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1411 g_string_free(data, TRUE);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1412
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1413
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1414 /* 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
1415 if (imflags & GAIM_CONV_IM_AUTO_RESP)
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1416 ret = aim_odc_send_im(sess, conn, buf, len, 0, 1);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1417 else
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1418 ret = aim_odc_send_im(sess, conn, buf, len, 0, 0);
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 g_free(buf);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1421
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1422 return ret;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1423 }
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 struct ask_do_dir_im {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1426 char *who;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1427 GaimConnection *gc;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1428 };
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 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
1431 g_free(data->who);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1432 g_free(data);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1433 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1434
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1435 /* 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
1436 * 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
1437 * 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
1438 * connect to them, and so we do that.
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1439 *
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1440 * 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
1441 * 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
1442 *
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1443 * 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
1444 */
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1445 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
1446 OscarData *od;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1447 struct oscar_direct_im *dim;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1448 int listenfd;
8982
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1449 const char *ip;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1450
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1451 od = (OscarData *)gc->proto_data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1452
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1453 dim = oscar_direct_im_find(od, who);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1454 if (dim) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1455 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
1456 oscar_direct_im_disconnect(od, dim);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1457 gaim_debug_info("oscar",
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1458 "Gave up on old direct IM, trying again\n");
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1459 } else {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1460 gaim_notify_error(gc, NULL, "DirectIM already open.", NULL);
8980
d068f4270837 [gaim-migrate @ 9755]
Tim Ringenbach <marv@pidgin.im>
parents: 8978
diff changeset
1461 return;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1462 }
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 dim = g_new0(struct oscar_direct_im, 1);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1465 dim->gc = gc;
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1466 g_snprintf(dim->name, sizeof dim->name, "%s", who);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1467
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1468 listenfd = gaim_network_listen_range(5190, 5199);
8982
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1469 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
1470 if (listenfd >= 0)
b16e0c0ac03c [gaim-migrate @ 10279]
Tim Ringenbach <marv@pidgin.im>
parents: 9407
diff changeset
1471 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
1472 if (dim->conn != NULL) {
8982
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1473 char *tmp;
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1474 GaimConversation *conv;
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1475
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1476 od->direct_ims = g_slist_append(od->direct_ims, dim);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1477 dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1478 oscar_callback, dim->conn);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1479 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
1480 gaim_odc_initiate, 0);
8982
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1481
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1482 conv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, who);
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1483 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
1484 gaim_network_get_port_from_fd(listenfd));
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1485 gaim_conversation_write(conv, NULL, tmp, GAIM_MESSAGE_SYSTEM, time(NULL));
0ba49ae0ed51 [gaim-migrate @ 9757]
Tim Ringenbach <marv@pidgin.im>
parents: 8980
diff changeset
1486 g_free(tmp);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1487 } else {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1488 gaim_notify_error(gc, NULL, _("Unable to open Direct IM"), NULL);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1489 oscar_direct_im_destroy(od, dim);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1490 }
8983
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
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1493 static void oscar_direct_im(struct ask_do_dir_im *data) {
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1494 GaimConnection *gc = data->gc;
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1495
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1496 if (!g_list_find(gaim_connections_get_all(), gc)) {
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1497 g_free(data->who);
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1498 g_free(data);
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1499 return;
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1500 }
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1501
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
1502 oscar_direct_im_initiate(gc, data->who, NULL);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1503 g_free(data->who);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1504 g_free(data);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1505 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1506
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1507 /* this is the right click menu cb thingy */
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1508 static void oscar_ask_direct_im(GaimBlistNode *node, gpointer ignored) {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1509
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1510 GaimBuddy *buddy;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1511 GaimConnection *gc;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1512 gchar *buf;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1513 struct ask_do_dir_im *data;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1514
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1515 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node));
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1516
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1517 buddy = (GaimBuddy *) node;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1518 gc = gaim_account_get_connection(buddy->account);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1519
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1520 data = g_new0(struct ask_do_dir_im, 1);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1521 data->who = g_strdup(buddy->name);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1522 data->gc = gc;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1523 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
1524 buddy->name);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1525
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1526 gaim_request_action(gc, NULL, buf,
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1527 _("Because this reveals your IP address, it "
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1528 "may be considered a privacy risk. Do you "
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1529 "wish to continue?"),
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1530 0, data, 2,
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1531 _("Connect"), G_CALLBACK(oscar_direct_im),
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
1532 _("Cancel"), G_CALLBACK(oscar_cancel_direct_im));
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1533 g_free(buf);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1534 }
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1535
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1536 /*****************************************************************************
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1537 * End scary direct im stuff
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1538 *****************************************************************************/
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1539
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1540 static void oscar_callback(gpointer data, gint source, GaimInputCondition condition) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1541 aim_conn_t *conn = (aim_conn_t *)data;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1542 aim_session_t *sess = aim_conn_getsess(conn);
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1543 GaimConnection *gc = sess ? sess->aux_data : NULL;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1544 OscarData *od;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1545
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1546 if (!gc) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1547 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1548 "oscar callback for closed connection (1).\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1549 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1550 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1551
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1552 od = (OscarData *)gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1553
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1554 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1555 /* oh boy. this is probably bad. i guess the only thing we
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1556 * can really do is return? */
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1557 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1558 "oscar callback for closed connection (2).\n");
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1559 gaim_debug_misc("oscar", "gc = %p\n", gc);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1560 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1561 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1562
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1563 if (condition & GAIM_INPUT_READ) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1564 if (conn->type == AIM_CONN_TYPE_LISTENER) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1565 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1566 "got information on rendezvous listener\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1567 if (aim_handlerendconnect(od->sess, conn) < 0) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1568 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1569 "connection error (rendezvous listener)\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1570 aim_conn_kill(od->sess, &conn);
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1571 /* AAA - Don't we need to gaim_xfer_cancel here? --marv */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1572 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1573 } else {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1574 if (aim_get_command(od->sess, conn) >= 0) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1575 aim_rxdispatch(od->sess);
6029
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
1576 if (od->killme) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1577 gaim_debug_error("oscar", "Waiting to be destroyed\n");
6029
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
1578 return;
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
1579 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1580 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1581 if ((conn->type == AIM_CONN_TYPE_BOS) ||
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1582 !(aim_getconn_type(od->sess, AIM_CONN_TYPE_BOS))) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1583 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1584 "major connection error\n");
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1585 gaim_connection_error(gc, _("Disconnected."));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1586 } else if (conn->type == AIM_CONN_TYPE_CHAT) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1587 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
1588 GaimConversation *conv = gaim_find_chat(gc, c->id);
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
1589 char *buf;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1590 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1591 "disconnected from chat room %s\n", c->name);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1592 c->conn = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1593 if (c->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1594 gaim_input_remove(c->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1595 c->inpa = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1596 c->fd = -1;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1597 aim_conn_kill(od->sess, &conn);
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
1598 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
1599 if (conv)
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
1600 gaim_conversation_write(conv, NULL, buf, GAIM_MESSAGE_ERROR, time(NULL));
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
1601 else
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
1602 gaim_notify_error(gc, NULL, buf, NULL);
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
1603 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1604 } else if (conn->type == AIM_CONN_TYPE_CHATNAV) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1605 if (od->cnpa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1606 gaim_input_remove(od->cnpa);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1607 od->cnpa = 0;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1608 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1609 "removing chatnav input watcher\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1610 while (od->create_rooms) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1611 struct create_room *cr = od->create_rooms->data;
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
1612 g_free(cr->name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1613 od->create_rooms =
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1614 g_slist_remove(od->create_rooms, cr);
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
1615 g_free(cr);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1616 gaim_notify_error(gc, NULL,
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1617 _("Chat is currently unavailable"),
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
1618 NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1619 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1620 aim_conn_kill(od->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1621 } else if (conn->type == AIM_CONN_TYPE_AUTH) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1622 if (od->paspa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1623 gaim_input_remove(od->paspa);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1624 od->paspa = 0;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1625 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1626 "removing authconn input watcher\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1627 aim_conn_kill(od->sess, &conn);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
1628 } else if (conn->type == AIM_CONN_TYPE_EMAIL) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1629 if (od->emlpa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1630 gaim_input_remove(od->emlpa);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1631 od->emlpa = 0;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1632 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1633 "removing email input watcher\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1634 aim_conn_kill(od->sess, &conn);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1635 } else if (conn->type == AIM_CONN_TYPE_ICON) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1636 if (od->icopa > 0)
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1637 gaim_input_remove(od->icopa);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1638 od->icopa = 0;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1639 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1640 "removing icon input watcher\n");
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1641 aim_conn_kill(od->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1642 } else if (conn->type == AIM_CONN_TYPE_RENDEZVOUS) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1643 if (conn->subtype == AIM_CONN_SUBTYPE_OFT_DIRECTIM)
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1644 gaim_odc_disconnect(od->sess, conn);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1645 aim_conn_kill(od->sess, &conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1646 } else {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1647 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1648 "holy crap! generic connection error! %hu\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1649 conn->type);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1650 aim_conn_kill(od->sess, &conn);
2086
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 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1653 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1654 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1655 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1656
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1657 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
1658 GaimConnection *gc = sess->aux_data;
7285
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
1659 gchar *s = g_strdup_vprintf(format, va);
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
1660 gchar *buf;
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
1661
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
1662 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
1663 gaim_debug_info("oscar", buf);
7285
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
1664 if (buf[strlen(buf)-1] != '\n')
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1665 gaim_debug_info(NULL, "\n");
7285
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
1666 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1667 g_free(s);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1668 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1669
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1670 static void oscar_login_connect(gpointer data, gint source, GaimInputCondition cond)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1671 {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1672 GaimConnection *gc = data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1673 OscarData *od;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1674 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1675 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1676
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1677 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1678 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1679 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1680 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1681
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1682 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1683 sess = od->sess;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1684 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
1685 conn->fd = source;
2086
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 if (source < 0) {
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1688 gaim_connection_error(gc, _("Couldn't connect to host"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1689 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1690 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1691
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1692 aim_conn_completeconnect(sess, conn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1693 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
1694 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
1695
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1696 gaim_debug_info("oscar",
7282
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
1697 "Screen name sent, waiting for response\n");
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1698 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
1699 ck[1] = 0x65;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1700 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1701
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1702 static void oscar_login(GaimAccount *account) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1703 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1704 aim_conn_t *conn;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1705 GaimConnection *gc = gaim_account_get_connection(account);
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1706 OscarData *od = gc->proto_data = g_new0(OscarData, 1);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1707
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1708 gaim_debug_misc("oscar", "oscar_login: gc = %p\n", gc);
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
1709
8437
9a95bfeb008d [gaim-migrate @ 9167]
Evan Schoenberg <evands@pidgin.im>
parents: 8430
diff changeset
1710 if (!aim_snvalid(gaim_account_get_username(account))) {
9a95bfeb008d [gaim-migrate @ 9167]
Evan Schoenberg <evands@pidgin.im>
parents: 8430
diff changeset
1711 gchar *buf;
8590
6f7b9c538d68 [gaim-migrate @ 9341]
Mark Doliner <markdoliner@pidgin.im>
parents: 8589
diff changeset
1712 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
1713 gaim_connection_error(gc, buf);
9a95bfeb008d [gaim-migrate @ 9167]
Evan Schoenberg <evands@pidgin.im>
parents: 8430
diff changeset
1714 g_free(buf);
9a95bfeb008d [gaim-migrate @ 9167]
Evan Schoenberg <evands@pidgin.im>
parents: 8430
diff changeset
1715 }
9a95bfeb008d [gaim-migrate @ 9167]
Evan Schoenberg <evands@pidgin.im>
parents: 8430
diff changeset
1716
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
1717 if (aim_sn_is_icq((gaim_account_get_username(account)))) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1718 od->icq = TRUE;
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
1719 } else {
6622
277eb0b14653 [gaim-migrate @ 7146]
Robert McQueen <robot101@debian.org>
parents: 6621
diff changeset
1720 gc->flags |= GAIM_CONNECTION_HTML;
277eb0b14653 [gaim-migrate @ 7146]
Robert McQueen <robot101@debian.org>
parents: 6621
diff changeset
1721 gc->flags |= GAIM_CONNECTION_AUTO_RESP;
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
1722 }
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
1723 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
1724
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1725 sess = g_new0(aim_session_t, 1);
7285
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
1726 aim_session_init(sess, TRUE, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1727 aim_setdebuggingcb(sess, oscar_debug);
7282
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
1728 /*
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
1729 * 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
1730 * to see if things need to be sent.
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
1731 */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1732 aim_tx_setenqueue(sess, AIM_TX_IMMEDIATE, NULL);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1733 od->sess = sess;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1734 sess->aux_data = gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1735
9935
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
1736 /* Connect to core Gaim signals */
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10042
diff changeset
1737 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
1738
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1739 conn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1740 if (conn == NULL) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1741 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
1742 "internal connection error\n");
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1743 gaim_connection_error(gc, _("Unable to login to AIM"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1744 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1745 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1746
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
1747 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
1748 aim_conn_addhandler(sess, conn, 0x0017, 0x0007, gaim_parse_login, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1749 aim_conn_addhandler(sess, conn, 0x0017, 0x0003, gaim_parse_auth_resp, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1750
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1751 conn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
1752 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
1753 gaim_account_get_int(account, "port", FAIM_LOGIN_PORT),
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1754 oscar_login_connect, gc) < 0) {
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1755 gaim_connection_error(gc, _("Couldn't connect to host"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1756 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1757 }
7282
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
1758
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1759 gaim_connection_update_progress(gc, _("Connecting"), 0, OSCAR_CONNECT_STEPS);
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
1760 ck[0] = 0x5a;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1761 }
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1762
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
1763 static void oscar_close(GaimConnection *gc) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1764 OscarData *od = (OscarData *)gc->proto_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1765
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1766 while (od->oscar_chats) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1767 struct chat_connection *n = od->oscar_chats->data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1768 if (n->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1769 gaim_input_remove(n->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1770 g_free(n->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1771 g_free(n->show);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1772 od->oscar_chats = g_slist_remove(od->oscar_chats, n);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1773 g_free(n);
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 while (od->direct_ims) {
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1776 struct oscar_direct_im *n = od->direct_ims->data;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
1777 oscar_direct_im_destroy(od, n);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1778 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1779 /* BBB */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1780 while (od->file_transfers) {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1781 GaimXfer *xfer;
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1782 xfer = (GaimXfer *)od->file_transfers->data;
7805
6045c467441e [gaim-migrate @ 8452]
Tim Ringenbach <marv@pidgin.im>
parents: 7793
diff changeset
1783 gaim_xfer_cancel_local(xfer);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
1784 }
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1785 while (od->requesticon) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1786 char *sn = od->requesticon->data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1787 od->requesticon = g_slist_remove(od->requesticon, sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1788 free(sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1789 }
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
1790 g_hash_table_destroy(od->buddyinfo);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1791 while (od->create_rooms) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1792 struct create_room *cr = od->create_rooms->data;
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
1793 g_free(cr->name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1794 od->create_rooms = g_slist_remove(od->create_rooms, cr);
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
1795 g_free(cr);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
1796 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1797 if (od->email)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1798 g_free(od->email);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1799 if (od->newp)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1800 g_free(od->newp);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1801 if (od->oldp)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1802 g_free(od->oldp);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1803 if (gc->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1804 gaim_input_remove(gc->inpa);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1805 if (od->cnpa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1806 gaim_input_remove(od->cnpa);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1807 if (od->paspa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1808 gaim_input_remove(od->paspa);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1809 if (od->emlpa > 0)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1810 gaim_input_remove(od->emlpa);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1811 if (od->icopa > 0)
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
1812 gaim_input_remove(od->icopa);
6907
895dc33ce157 [gaim-migrate @ 7454]
Mark Doliner <markdoliner@pidgin.im>
parents: 6905
diff changeset
1813 if (od->icontimer > 0)
8287
266eacc707ac [gaim-migrate @ 9011]
Scott Lamb
parents: 8273
diff changeset
1814 gaim_timeout_remove(od->icontimer);
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
1815 if (od->getblisttimer > 0)
8287
266eacc707ac [gaim-migrate @ 9011]
Scott Lamb
parents: 8273
diff changeset
1816 gaim_timeout_remove(od->getblisttimer);
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
1817 if (od->getinfotimer > 0)
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
1818 gaim_timeout_remove(od->getinfotimer);
10087
e5b80a38939d [gaim-migrate @ 11098]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10042
diff changeset
1819 gaim_prefs_disconnect_by_handle(gc);
9971
8291bafb0025 [gaim-migrate @ 10882]
Daniel Atallah <datallah@pidgin.im>
parents: 9948
diff changeset
1820
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1821 aim_session_kill(od->sess);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1822 g_free(od->sess);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1823 od->sess = NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1824 g_free(gc->proto_data);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1825 gc->proto_data = NULL;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1826 gaim_debug_info("oscar", "Signed off.\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1827 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1828
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
1829 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
1830 GaimConnection *gc = data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1831 OscarData *od;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1832 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
1833 aim_conn_t *bosconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1834
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
1835 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1836 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1837 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1838 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1839
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1840 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1841 sess = od->sess;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1842 bosconn = od->conn;
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
1843 bosconn->fd = source;
2086
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 if (source < 0) {
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1846 gaim_connection_error(gc, _("Could Not Connect"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1847 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1848 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1849
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1850 aim_conn_completeconnect(sess, bosconn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1851 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
1852
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
1853 gaim_connection_update_progress(gc,
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
1854 _("Connection established, cookie sent"), 4, OSCAR_CONNECT_STEPS);
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
1855 ck[4] = 0x61;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1856 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1857
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
1858 /* BBB */
4656
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 * 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
1861 * 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
1862 * ninja.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1863 *
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1864 * The series of events for a file send is:
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1865 * -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
1866 * -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
1867 * 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
1868 * gives them the file name, port, IP, etc.)
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1869 * -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
1870 * in oscar_sendfile_estblsh)
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1871 * -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
1872 * -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
1873 * connection.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1874 * -We get drunk because file transfer kicks ass.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1875 *
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1876 * The series of events for a file receive is:
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1877 * -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
1878 * -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
1879 * oscar_xfer_init is called
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1880 * -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
1881 * -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
1882 * them an AIM_CB_OFT_ACK.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1883 * -They begin to send us lots of raw data.
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1884 * -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
1885 * the connection.
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1886 */
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1887 static void oscar_sendfile_connected(gpointer data, gint source, GaimInputCondition condition);
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1888
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1889 /*
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1890 * Miscellaneous xfer functions
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1891 */
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1892 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
1893 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1894 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1895 struct aim_oft_info *oft_info;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1896
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1897 while (fts) {
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1898 xfer = fts->data;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1899 oft_info = xfer->data;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1900
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1901 if (oft_info && !memcmp(ck, oft_info->cookie, 8))
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1902 return xfer;
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1903
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1904 fts = g_slist_next(fts);
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1905 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1906
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1907 return NULL;
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1908 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1909
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1910 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
1911 {
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
1912 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1913 struct aim_oft_info *oft_info;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1914
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1915 while (fts) {
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1916 xfer = fts->data;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1917 oft_info = xfer->data;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1918
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
1919 if (oft_info && (conn == oft_info->conn))
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1920 return xfer;
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1921
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1922 fts = g_slist_next(fts);
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1923 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1924
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1925 return NULL;
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1926 }
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
1927
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1928 static void oscar_xfer_end(GaimXfer *xfer)
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1929 {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1930 struct aim_oft_info *oft_info = xfer->data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1931 GaimConnection *gc = oft_info->sess->aux_data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1932 OscarData *od = gc->proto_data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1933
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1934 gaim_debug_info("oscar", "AAA - in oscar_xfer_end\n");
8446
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 if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1937 oft_info->fh.nrecvd = gaim_xfer_get_bytes_sent(xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1938 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
1939 }
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1940
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1941 aim_conn_kill(oft_info->sess, &oft_info->conn);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1942 aim_oft_destroyinfo(oft_info);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1943 xfer->data = NULL;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1944 od->file_transfers = g_slist_remove(od->file_transfers, xfer);
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 /*
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1948 * xfer functions used when receiving files
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1949 */
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1950
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1951 static void oscar_xfer_init_recv(GaimXfer *xfer)
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1952 {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1953 struct aim_oft_info *oft_info = xfer->data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1954 GaimConnection *gc = oft_info->sess->aux_data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1955 OscarData *od = gc->proto_data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1956
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1957 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
1958
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1959 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
1960 if (oft_info->conn) {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1961 oft_info->conn->subtype = AIM_CONN_SUBTYPE_OFT_SENDFILE;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1962 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
1963 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
1964 xfer->remote_ip, xfer->remote_port, oscar_sendfile_connected, xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1965 if (xfer->fd == -1) {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1966 gaim_xfer_error(GAIM_XFER_RECEIVE, xfer->who,
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1967 _("Unable to establish file descriptor."));
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1968 gaim_xfer_cancel_local(xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1969 }
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1970 } else {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1971 gaim_xfer_error(GAIM_XFER_RECEIVE, xfer->who,
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1972 _("Unable to create new connection."));
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1973 gaim_xfer_cancel_local(xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1974 /* 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
1975 }
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 }
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1978
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1979 static void oscar_xfer_cancel_recv(GaimXfer *xfer)
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1980 {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1981 struct aim_oft_info *oft_info = xfer->data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1982 GaimConnection *gc = oft_info->sess->aux_data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1983 OscarData *od = gc->proto_data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1984
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
1985 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
1986
9771
42bd06e5b1b3 [gaim-migrate @ 10639]
Dave West <kat@users.sourceforge.net>
parents: 9770
diff changeset
1987 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
1988 aim_im_sendch2_sendfile_cancel(oft_info->sess, oft_info);
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1989
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1990 aim_conn_kill(oft_info->sess, &oft_info->conn);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1991 aim_oft_destroyinfo(oft_info);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1992 xfer->data = NULL;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1993 od->file_transfers = g_slist_remove(od->file_transfers, xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1994 }
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 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
1997 {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
1998 struct aim_oft_info *oft_info = xfer->data;
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 /* Update our rolling checksum. Like Walmart, yo. */
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2001 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
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 /*
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2005 * xfer functions used when sending files
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2006 */
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2007
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2008 static void oscar_xfer_init_send(GaimXfer *xfer)
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2009 {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2010 struct aim_oft_info *oft_info = xfer->data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2011 GaimConnection *gc = oft_info->sess->aux_data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2012 OscarData *od = gc->proto_data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2013 int listenfd;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2014
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2015 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
2016
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2017 xfer->filename = g_path_get_basename(xfer->local_filename);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2018 strncpy(oft_info->fh.name, xfer->filename, 64);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2019 oft_info->fh.name[63] = '\0';
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2020 oft_info->fh.totsize = gaim_xfer_get_size(xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2021 oft_info->fh.size = gaim_xfer_get_size(xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2022 oft_info->fh.checksum = aim_oft_checksum_file(xfer->local_filename);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2023
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2024 /* Create a listening socket and an associated libfaim conn */
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2025 if ((listenfd = gaim_network_listen_range(5190, 5199)) < 0) {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2026 gaim_xfer_cancel_local(xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2027 return;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2028 }
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2029 xfer->local_port = gaim_network_get_port_from_fd(listenfd);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2030 oft_info->port = xfer->local_port;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2031 if (aim_sendfile_listen(od->sess, oft_info, listenfd) != 0) {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2032 gaim_xfer_cancel_local(xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2033 return;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2034 }
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2035 gaim_debug_misc("oscar",
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2036 "port is %hu, ip is %s\n",
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2037 xfer->local_port, oft_info->clientip);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2038 if (oft_info->conn) {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2039 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
2040 aim_im_sendch2_sendfile_ask(od->sess, oft_info);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2041 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
2042 } else {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2043 gaim_xfer_error(GAIM_XFER_SEND, xfer->who,
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2044 _("Unable to establish listener socket."));
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2045 gaim_xfer_cancel_local(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 }
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2048
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2049 static void oscar_xfer_cancel_send(GaimXfer *xfer)
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2050 {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2051 struct aim_oft_info *oft_info = xfer->data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2052 GaimConnection *gc = oft_info->sess->aux_data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2053 OscarData *od = gc->proto_data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2054
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2055 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
2056
9771
42bd06e5b1b3 [gaim-migrate @ 10639]
Dave West <kat@users.sourceforge.net>
parents: 9770
diff changeset
2057 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
2058 aim_im_sendch2_sendfile_cancel(oft_info->sess, oft_info);
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2059
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2060 aim_conn_kill(oft_info->sess, &oft_info->conn);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2061 aim_oft_destroyinfo(oft_info);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2062 xfer->data = NULL;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2063 od->file_transfers = g_slist_remove(od->file_transfers, xfer);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2064 }
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 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
2067 {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2068 struct aim_oft_info *oft_info = xfer->data;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2069
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2070 /* I'm not sure I like how we do this. --marv
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2071 * 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
2072 * of as a transferring just a single file. The rendezvous
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2073 * establishes a connection between two computers, and then
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2074 * those computers can use the same connection for transferring
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2075 * 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
2076 * 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
2077 * prpl, whenever one side or the other says they're finished
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2078 * using the connection. There might be a better way to intercept
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2079 * the socket from the core, however... --KingAnt
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2080 */
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 /*
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2083 * 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
2084 * 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
2085 */
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2086 if (gaim_xfer_get_bytes_remaining(xfer) <= 0) {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2087 gaim_input_remove(xfer->watcher);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2088 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
2089 xfer->fd = 0;
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2090 gaim_xfer_set_completed(xfer, TRUE);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2091 }
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2092 }
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2093
9466
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2094 static gboolean oscar_can_receive_file(GaimConnection *gc, const char *who) {
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2095 gboolean can_receive = FALSE;
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2096 OscarData *od = gc->proto_data;
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2097
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2098 if (!od->icq) {
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2099 aim_userinfo_t *userinfo;
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2100 userinfo = aim_locate_finduserinfo(od->sess, who);
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2101 if (userinfo && userinfo->capabilities & AIM_CAPS_SENDFILE)
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2102 can_receive = TRUE;
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
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2105 return can_receive;
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2106 }
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2107
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2108 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
2109
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
2110 OscarData *od;
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
2111 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2112 struct aim_oft_info *oft_info;
8231
347c8992c445 [gaim-migrate @ 8954]
Tim Ringenbach <marv@pidgin.im>
parents: 8227
diff changeset
2113 const char *ip;
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
2114
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
2115 od = (OscarData *)gc->proto_data;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
2116
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2117 /* 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
2118
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2119 /* Build the file transfer handle */
9466
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2120 xfer = gaim_xfer_new(gc->account, GAIM_XFER_SEND, who);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2121
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2122 /* Create the oscar-specific data */
8838
c23227da7b4a [gaim-migrate @ 9604]
Mark Doliner <markdoliner@pidgin.im>
parents: 8800
diff changeset
2123 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
2124 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
2125 xfer->data = oft_info;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
2126
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2127 /* Setup our I/O op functions */
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2128 gaim_xfer_set_init_fnc(xfer, oscar_xfer_init_send);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2129 gaim_xfer_set_end_fnc(xfer, oscar_xfer_end);
4675
8e0a7b537ca2 [gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents: 4666
diff changeset
2130 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
2131 gaim_xfer_set_request_denied_fnc(xfer, oscar_xfer_cancel_send);
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
2132 gaim_xfer_set_ack_fnc(xfer, oscar_xfer_ack_send);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2133
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2134 /* Keep track of this transfer for later */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2135 od->file_transfers = g_slist_append(od->file_transfers, xfer);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2136
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2137 /* Now perform the request */
9466
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2138 if (file)
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2139 gaim_xfer_request_accepted(xfer, file);
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2140 else
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
2141 gaim_xfer_request(xfer);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2142 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
2143
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2144 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
2145 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2146 OscarData *od = gc->proto_data;
6029
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
2147 GaimAccount *account = gc->account;
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
2148 aim_conn_t *bosconn;
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
2149 char *host; int port;
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
2150 int i, rc;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2151 va_list ap;
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2152 struct aim_authresp_info *info;
6029
85d6afa168fb [gaim-migrate @ 6479]
Mark Doliner <markdoliner@pidgin.im>
parents: 6019
diff changeset
2153
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2154 port = gaim_account_get_int(account, "port", FAIM_LOGIN_PORT);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2155
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2156 va_start(ap, fr);
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2157 info = va_arg(ap, struct aim_authresp_info *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2158 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2159
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2160 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2161 "inside auth_resp (Screen name: %s)\n", info->sn);
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2162
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
2163 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
2164 char buf[256];
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2165 switch (info->errorcode) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2166 case 0x05:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2167 /* Incorrect nick/password */
6498
23d2fd361db6 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
2168 gc->wants_to_die = TRUE;
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2169 gaim_connection_error(gc, _("Incorrect nickname or password."));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2170 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2171 case 0x11:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2172 /* Suspended account */
6498
23d2fd361db6 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
2173 gc->wants_to_die = TRUE;
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2174 gaim_connection_error(gc, _("Your account is currently suspended."));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2175 break;
3498
3f6ce04ea3ad [gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents: 3490
diff changeset
2176 case 0x14:
3f6ce04ea3ad [gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents: 3490
diff changeset
2177 /* service temporarily unavailable */
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2178 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
2179 break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2180 case 0x18:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2181 /* connecting too frequently */
6498
23d2fd361db6 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
2182 gc->wants_to_die = TRUE;
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2183 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
2184 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2185 case 0x1c:
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2186 /* client too old */
6498
23d2fd361db6 [gaim-migrate @ 7013]
Nathan Walp <nwalp@pidgin.im>
parents: 6478
diff changeset
2187 gc->wants_to_die = TRUE;
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
2188 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
2189 gaim_connection_error(gc, buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2190 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2191 default:
6623
75ba9eb9d3f8 [gaim-migrate @ 7147]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6622
diff changeset
2192 gaim_connection_error(gc, _("Authentication failed"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2193 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2194 }
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2195 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2196 "Login Error Code 0x%04hx\n", info->errorcode);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2197 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2198 "Error URL: %s\n", info->errorurl);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2199 od->killme = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2200 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2201 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2202
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2203
9992
d733f96bfc7b [gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents: 9991
diff changeset
2204 gaim_debug_misc("oscar", "Reg status: %hu\n", info->regstatus);
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2205
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2206 if (info->email) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2207 gaim_debug_misc("oscar", "Email: %s\n", info->email);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2208 } else {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2209 gaim_debug_misc("oscar", "Email is NULL\n");
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2210 }
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2211
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2212 gaim_debug_misc("oscar", "BOSIP: %s\n", info->bosip);
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2213 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2214 "Closing auth connection...\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2215 aim_conn_kill(sess, &fr->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2216
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2217 bosconn = aim_newconn(sess, AIM_CONN_TYPE_BOS, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2218 if (bosconn == NULL) {
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2219 gaim_connection_error(gc, _("Internal Error"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2220 od->killme = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2221 return 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2222 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2223
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
2224 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
2225 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
2226 aim_conn_addhandler(sess, bosconn, 0x0009, 0x0003, gaim_bosrights, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2227 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
2228 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
2229 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
2230 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
2231 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
2232 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
2233 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
2234 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
2235 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
2236 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
2237 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
2238 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
2239 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
2240 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
2241 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
2242 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
2243 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
2244 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
2245 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
2246 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
2247 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
2248 aim_conn_addhandler(sess, bosconn, 0x0001, 0x0001, gaim_parse_genericerr, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2249 aim_conn_addhandler(sess, bosconn, 0x0003, 0x0001, gaim_parse_genericerr, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2250 aim_conn_addhandler(sess, bosconn, 0x0009, 0x0001, gaim_parse_genericerr, 0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2251 aim_conn_addhandler(sess, bosconn, 0x0001, 0x001f, gaim_memrequest, 0);
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
2252 aim_conn_addhandler(sess, bosconn, 0x0001, 0x000f, gaim_selfinfo, 0);
5844
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
2253 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
2254 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
2255 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
2256 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
2257 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
2258 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
2259 #ifndef NOSSI
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
2260 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
2261 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
2262 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
2263 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
2264 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
2265 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
2266 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
2267 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
2268 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
2269 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
2270 #endif
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
2271
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2272 od->conn = bosconn;
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2273 for (i = 0; i < (int)strlen(info->bosip); i++) {
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2274 if (info->bosip[i] == ':') {
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2275 port = atoi(&(info->bosip[i+1]));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2276 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2277 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2278 }
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2279 host = g_strndup(info->bosip, i);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2280 bosconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2281 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
2282 g_free(host);
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
2283 if (rc < 0) {
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
2284 gaim_connection_error(gc, _("Could Not Connect"));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2285 od->killme = TRUE;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2286 return 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2287 }
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
2288 aim_sendcookie(sess, bosconn, info->cookielen, info->cookie);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
2289 gaim_input_remove(gc->inpa);
2704
0937693c4937 [gaim-migrate @ 2717]
Adam Fritzler <mid@auk.cx>
parents: 2703
diff changeset
2290
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2291 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
2292 ck[3] = 0x64;
7282
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
2293
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2294 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2295 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2296
7285
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
2297 /* XXX - Should use gaim_url_fetch for the below stuff */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2298 struct pieceofcrap {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2299 GaimConnection *gc;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2300 unsigned long offset;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2301 unsigned long len;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2302 char *modname;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2303 int fd;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2304 aim_conn_t *conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2305 unsigned int inpa;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2306 };
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2307
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
2308 static void damn_you(gpointer data, gint source, GaimInputCondition c)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2309 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2310 struct pieceofcrap *pos = data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2311 OscarData *od = pos->gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2312 char in = '\0';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2313 int x = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2314 unsigned char m[17];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2315
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2316 while (read(pos->fd, &in, 1) == 1) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2317 if (in == '\n')
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2318 x++;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2319 else if (in != '\r')
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2320 x = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2321 if (x == 2)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2322 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2323 in = '\0';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2324 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2325 if (in != '\n') {
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
2326 char buf[256];
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
2327 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
2328 "this is fixed. Check %s for updates."), GAIM_WEBSITE);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2329 gaim_notify_warning(pos->gc, NULL,
7422
da86b60869cb [gaim-migrate @ 8024]
Luke Schierer <lschiere@pidgin.im>
parents: 7406
diff changeset
2330 _("Gaim was unable to get a valid AIM login hash."),
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2331 buf);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
2332 gaim_input_remove(pos->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2333 close(pos->fd);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2334 g_free(pos);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2335 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2336 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2337 read(pos->fd, m, 16);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2338 m[16] = '\0';
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2339 gaim_debug_misc("oscar", "Sending hash: ");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2340 for (x = 0; x < 16; x++)
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2341 gaim_debug_misc(NULL, "%02hhx ", (unsigned char)m[x]);
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2342
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2343 gaim_debug_misc(NULL, "\n");
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
2344 gaim_input_remove(pos->inpa);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2345 close(pos->fd);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2346 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
2347 g_free(pos);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2348 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2349
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
2350 static void straight_to_hell(gpointer data, gint source, GaimInputCondition cond) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2351 struct pieceofcrap *pos = data;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2352 gchar *buf;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2353
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
2354 pos->fd = source;
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
2355
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2356 if (source < 0) {
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2357 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
2358 "this is fixed. Check %s for updates."), GAIM_WEBSITE);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2359 gaim_notify_warning(pos->gc, NULL,
7422
da86b60869cb [gaim-migrate @ 8024]
Luke Schierer <lschiere@pidgin.im>
parents: 7406
diff changeset
2360 _("Gaim was unable to get a valid AIM login hash."),
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2361 buf);
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2362 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2363 if (pos->modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2364 g_free(pos->modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2365 g_free(pos);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2366 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2367 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2368
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2369 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
2370 pos->offset, pos->len, pos->modname ? pos->modname : "");
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2371 write(pos->fd, buf, strlen(buf));
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
2372 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2373 if (pos->modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2374 g_free(pos->modname);
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
2375 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
2376 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2377 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2378
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2379 /* size of icbmui.ocm, the largest module in AIM 3.5 */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2380 #define AIM_MAX_FILE_SIZE 98304
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2381
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2382 int gaim_memrequest(aim_session_t *sess, aim_frame_t *fr, ...) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2383 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2384 struct pieceofcrap *pos;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2385 fu32_t offset, len;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2386 char *modname;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2387
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2388 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2389 offset = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
2390 len = va_arg(ap, fu32_t);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2391 modname = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2392 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2393
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2394 gaim_debug_misc("oscar",
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
2395 "offset: %u, len: %u, file: %s\n",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2396 offset, len, (modname ? modname : "aim.exe"));
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2397
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2398 if (len == 0) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2399 gaim_debug_misc("oscar", "len is 0, hashing NULL\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2400 aim_sendmemblock(sess, fr->conn, offset, len, NULL,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2401 AIM_SENDMEMBLOCK_FLAG_ISREQUEST);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2402 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2403 }
9625
f2cda8836eb9 [gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents: 9620
diff changeset
2404 /* 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
2405 #if 0
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2406 if (offset > AIM_MAX_FILE_SIZE || len > AIM_MAX_FILE_SIZE) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2407 char *buf;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2408 int i = 8;
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 i += strlen(modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2411 buf = g_malloc(i);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2412 i = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2413 if (modname) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2414 memcpy(buf, modname, strlen(modname));
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2415 i += strlen(modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2416 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2417 buf[i++] = offset & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2418 buf[i++] = (offset >> 8) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2419 buf[i++] = (offset >> 16) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2420 buf[i++] = (offset >> 24) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2421 buf[i++] = len & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2422 buf[i++] = (len >> 8) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2423 buf[i++] = (len >> 16) & 0xff;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2424 buf[i++] = (len >> 24) & 0xff;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2425 gaim_debug_misc("oscar", "len + offset is invalid, "
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2426 "hashing request\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2427 aim_sendmemblock(sess, command->conn, offset, i, buf, AIM_SENDMEMBLOCK_FLAG_ISREQUEST);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2428 g_free(buf);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2429 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2430 }
9625
f2cda8836eb9 [gaim-migrate @ 10469]
Mark Doliner <markdoliner@pidgin.im>
parents: 9620
diff changeset
2431 #endif
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 = g_new0(struct pieceofcrap, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2434 pos->gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2435 pos->conn = fr->conn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2436
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2437 pos->offset = offset;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2438 pos->len = len;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2439 pos->modname = modname ? g_strdup(modname) : NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2440
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2441 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
2442 char buf[256];
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2443 if (pos->modname)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2444 g_free(pos->modname);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2445 g_free(pos);
4056
d75ee349aaa4 [gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 3952
diff changeset
2446 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
2447 "this is fixed. Check %s for updates."), GAIM_WEBSITE);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2448 gaim_notify_warning(pos->gc, NULL,
7422
da86b60869cb [gaim-migrate @ 8024]
Luke Schierer <lschiere@pidgin.im>
parents: 7406
diff changeset
2449 _("Gaim was unable to get a valid login hash."),
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
2450 buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2451 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2452
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2453 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2454 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2455
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2456 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
2457 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2458 OscarData *od = gc->proto_data;
5591
2327f0802baa [gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
2459 GaimAccount *account = gaim_connection_get_account(gc);
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2460 GaimAccount *ac = gaim_connection_get_account(gc);
7282
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
2461 #if 0
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
2462 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
2463 #endif
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
2464 va_list ap;
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
2465 char *key;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2466
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2467 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2468 key = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2469 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2470
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2471 if (od->icq) {
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
2472 struct client_info_s info = CLIENTINFO_ICQ_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 } else {
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
2476 struct client_info_s info = CLIENTINFO_AIM_KNOWNGOOD;
5591
2327f0802baa [gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
2477 aim_send_login(sess, fr->conn, gaim_account_get_username(ac),
2327f0802baa [gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents: 5580
diff changeset
2478 gaim_account_get_password(account), &info, key);
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
2479 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2480
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2481 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
2482 ck[2] = 0x6c;
7282
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
2483
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2484 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2485 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2486
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2487 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
2488 GaimConnection *gc = sess->aux_data;
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2489 struct chat_connection *chatcon;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2490 static int id = 1;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2491
6905
dd40a6134713 [gaim-migrate @ 7452]
Mark Doliner <markdoliner@pidgin.im>
parents: 6879
diff changeset
2492 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
2493 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
2494 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
2495 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
2496 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
2497
2672
5c9b7617a1f3 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
2498 aim_clientready(sess, fr->conn);
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2499
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2500 chatcon = find_oscar_chat_by_conn(gc, fr->conn);
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2501 chatcon->id = id;
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
2502 chatcon->conv = serv_got_joined_chat(gc, id++, chatcon->show);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2503
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2504 return 1;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2505 }
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
2506
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2507 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
2508
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2509 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
2510 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
2511
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2512 aim_clientready(sess, fr->conn);
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2513
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
2514 aim_chatnav_reqrights(sess, fr->conn);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2515
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2516 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2517 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2518
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2519 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
2520
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2521 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
2522 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
2523
7282
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
2524 aim_email_sendcookies(sess);
73b94979f76b [gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents: 7261
diff changeset
2525 aim_email_activate(sess);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2526 aim_clientready(sess, fr->conn);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2527
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2528 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2529 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2530
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2531 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
2532 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2533 OscarData *od = gc->proto_data;
4804
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_conn_addhandler(sess, fr->conn, 0x0018, 0x0001, gaim_parse_genericerr, 0);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2536 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
2537 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
2538
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2539 aim_clientready(sess, fr->conn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2540
4823
e855589fb088 [gaim-migrate @ 5148]
Roald Dahl
parents: 4822
diff changeset
2541 od->iconconnecting = FALSE;
e855589fb088 [gaim-migrate @ 5148]
Roald Dahl
parents: 4822
diff changeset
2542
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2543 if (od->icontimer)
8287
266eacc707ac [gaim-migrate @ 9011]
Scott Lamb
parents: 8273
diff changeset
2544 gaim_timeout_remove(od->icontimer);
8273
7882af5843e9 [gaim-migrate @ 8997]
Scott Lamb
parents: 8266
diff changeset
2545 od->icontimer = gaim_timeout_add(100, gaim_icon_timerfunc, gc);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2546
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2547 return 1;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2548 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2549
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2550 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
2551 GaimConnection *gc = data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2552 OscarData *od;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2553 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2554 aim_conn_t *tstconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2555
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2556 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2557 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2558 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2559 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2560
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2561 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2562 sess = od->sess;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2563 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
2564 tstconn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2565
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2566 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2567 aim_conn_kill(sess, &tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2568 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2569 "unable to connect to chatnav server\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2570 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2571 }
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 aim_conn_completeconnect(sess, tstconn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2574 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
2575 gaim_debug_info("oscar", "chatnav: connected\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2576 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2577
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
2578 static void oscar_auth_connect(gpointer data, gint source, GaimInputCondition cond)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2579 {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2580 GaimConnection *gc = data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2581 OscarData *od;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2582 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2583 aim_conn_t *tstconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2584
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2585 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2586 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2587 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2588 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2589
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2590 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2591 sess = od->sess;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2592 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
2593 tstconn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2594
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2595 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2596 aim_conn_kill(sess, &tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2597 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2598 "unable to connect to authorizer\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2599 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2600 }
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 aim_conn_completeconnect(sess, tstconn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2603 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
2604 gaim_debug_info("oscar", "admin: connected\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2605 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2606
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
2607 static void oscar_chat_connect(gpointer data, gint source, GaimInputCondition cond)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2608 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2609 struct chat_connection *ccon = data;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2610 GaimConnection *gc = ccon->gc;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2611 OscarData *od;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2612 aim_session_t *sess;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2613 aim_conn_t *tstconn;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2614
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2615 if (!g_list_find(gaim_connections_get_all(), gc)) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2616 close(source);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2617 g_free(ccon->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2618 g_free(ccon->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2619 g_free(ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2620 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2621 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2622
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2623 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2624 sess = od->sess;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2625 tstconn = ccon->conn;
4366
d2b52a5ff6fc [gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents: 4359
diff changeset
2626 tstconn->fd = source;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2627
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2628 if (source < 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2629 aim_conn_kill(sess, &tstconn);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2630 g_free(ccon->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2631 g_free(ccon->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2632 g_free(ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2633 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2634 }
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 aim_conn_completeconnect(sess, ccon->conn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2637 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
2638 od->oscar_chats = g_slist_append(od->oscar_chats, ccon);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2639 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2640
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2641 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
2642 GaimConnection *gc = data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2643 OscarData *od;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2644 aim_session_t *sess;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2645 aim_conn_t *tstconn;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2646
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2647 if (!g_list_find(gaim_connections_get_all(), gc)) {
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2648 close(source);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2649 return;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2650 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2651
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2652 od = gc->proto_data;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2653 sess = od->sess;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2654 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
2655 tstconn->fd = source;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2656
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2657 if (source < 0) {
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2658 aim_conn_kill(sess, &tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2659 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2660 "unable to connect to email server\n");
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2661 return;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2662 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2663
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2664 aim_conn_completeconnect(sess, tstconn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
2665 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
2666 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2667 "email: connected\n");
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2668 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2669
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2670 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
2671 GaimConnection *gc = data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
2672 OscarData *od;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2673 aim_session_t *sess;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2674 aim_conn_t *tstconn;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2675
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
2676 if (!g_list_find(gaim_connections_get_all(), gc)) {
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2677 close(source);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2678 return;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2679 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2680
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2681 od = gc->proto_data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2682 sess = od->sess;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2683 tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_ICON);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2684 tstconn->fd = source;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2685
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2686 if (source < 0) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2687 aim_conn_kill(sess, &tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2688 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2689 "unable to connect to icon server\n");
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2690 return;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2691 }
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 aim_conn_completeconnect(sess, tstconn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2694 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
2695 gaim_debug_info("oscar", "icon: connected\n");
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2696 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2697
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2698 /* 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
2699 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
2700 GaimConnection *gc = sess->aux_data;
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2701 GaimAccount *account = gaim_connection_get_account(gc);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2702 aim_conn_t *tstconn;
4452
1e5d62c19533 [gaim-migrate @ 4727]
Sean Egan <seanegan@pidgin.im>
parents: 4443
diff changeset
2703 int i;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2704 char *host;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2705 int port;
4821
9107fba2dbe5 [gaim-migrate @ 5146]
Mark Doliner <markdoliner@pidgin.im>
parents: 4820
diff changeset
2706 va_list ap;
9107fba2dbe5 [gaim-migrate @ 5146]
Mark Doliner <markdoliner@pidgin.im>
parents: 4820
diff changeset
2707 struct aim_redirect_data *redir;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2708
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2709 port = gaim_account_get_int(account, "port", FAIM_LOGIN_PORT);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2710
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2711 va_start(ap, fr);
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2712 redir = va_arg(ap, struct aim_redirect_data *);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2713 va_end(ap);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2714
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2715 for (i = 0; i < (int)strlen(redir->ip); i++) {
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2716 if (redir->ip[i] == ':') {
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2717 port = atoi(&(redir->ip[i+1]));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2718 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2719 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2720 }
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2721 host = g_strndup(redir->ip, i);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2722
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2723 switch(redir->group) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2724 case 0x7: /* Authorizer */
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2725 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2726 "Reconnecting with authorizor...\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2727 tstconn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2728 if (tstconn == NULL) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2729 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2730 "unable to reconnect with authorizer\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2731 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2732 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2733 }
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
2734 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
2735 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
2736
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2737 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2738 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
2739 aim_conn_kill(sess, &tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2740 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2741 "unable to reconnect with authorizer\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2742 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2743 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2744 }
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
2745 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2746 break;
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2747
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2748 case 0xd: /* ChatNav */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2749 tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHATNAV, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2750 if (tstconn == NULL) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2751 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2752 "unable to connect to chatnav server\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2753 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2754 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2755 }
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
2756 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
2757 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
2758
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2759 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2760 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
2761 aim_conn_kill(sess, &tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2762 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2763 "unable to connect to chatnav server\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2764 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2765 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2766 }
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
2767 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2768 break;
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2769
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2770 case 0xe: { /* Chat */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2771 struct chat_connection *ccon;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2772
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2773 tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHAT, NULL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2774 if (tstconn == NULL) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2775 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2776 "unable to connect to chat server\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2777 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2778 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2779 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2780
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
2781 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
2782 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
2783
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2784 ccon = g_new0(struct chat_connection, 1);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2785 ccon->conn = tstconn;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2786 ccon->gc = gc;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2787 ccon->fd = -1;
2821
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2788 ccon->name = g_strdup(redir->chat.room);
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2789 ccon->exchange = redir->chat.exchange;
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2790 ccon->instance = redir->chat.instance;
f1ab7f03bdad [gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2820
diff changeset
2791 ccon->show = extract_name(redir->chat.room);
4634
c4318fc60090 [gaim-migrate @ 4941]
Nathan Walp <nwalp@pidgin.im>
parents: 4628
diff changeset
2792
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2793 ccon->conn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2794 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
2795 aim_conn_kill(sess, &tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2796 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2797 "unable to connect to chat server\n");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2798 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2799 g_free(ccon->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2800 g_free(ccon->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2801 g_free(ccon);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2802 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2803 }
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
2804 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2805 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2806 "Connected to chat room %s exchange %hu\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2807 ccon->name, ccon->exchange);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2808 } break;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2809
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2810 case 0x0010: { /* icon */
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2811 if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_ICON, NULL))) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2812 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2813 "unable to connect to icon server\n");
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2814 g_free(host);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2815 return 1;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2816 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2817 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
2818 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
2819
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2820 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2821 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
2822 aim_conn_kill(sess, &tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2823 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2824 "unable to connect to icon server\n");
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2825 g_free(host);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2826 return 1;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2827 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2828 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2829 } break;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2830
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2831 case 0x0018: { /* email */
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2832 if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_EMAIL, NULL))) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2833 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2834 "unable to connect to email server\n");
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2835 g_free(host);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2836 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2837 }
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
2838 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
2839 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
2840
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2841 tstconn->status |= AIM_CONN_STATUS_INPROGRESS;
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
2842 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
2843 aim_conn_kill(sess, &tstconn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2844 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2845 "unable to connect to email server\n");
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2846 g_free(host);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2847 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2848 }
4293
c025f268b6df [gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents: 4292
diff changeset
2849 aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2850 } break;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
2851
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2852 default: /* huh? */
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
2853 gaim_debug_warning("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2854 "got redirect for unknown service 0x%04hx\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
2855 redir->group);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2856 break;
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
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2859 g_free(host);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2860 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2861 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2862
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2863 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
2864 {
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2865 GaimConnection *gc;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2866 GaimAccount *account;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2867 OscarData *od;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2868 struct buddyinfo *bi;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2869 time_t time_idle = 0, signon = 0;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2870 int type = 0;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2871 int caps = 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2872 va_list ap;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2873 aim_userinfo_t *info;
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2874 gboolean buddy_is_away = FALSE;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2875
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2876 gc = sess->aux_data;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2877 account = gaim_connection_get_account(gc);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2878 od = gc->proto_data;
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
2879
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
2880 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
2881 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2882 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2883
10130
7256fb884aaf [gaim-migrate @ 11193]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
2884 g_return_val_if_fail(info != NULL, 1);
7256fb884aaf [gaim-migrate @ 11193]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
2885 g_return_val_if_fail(info->sn != NULL, 1);
7256fb884aaf [gaim-migrate @ 11193]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
2886
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2887 if (info->present & AIM_USERINFO_PRESENT_CAPABILITIES)
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2888 caps = info->capabilities;
3267
266f30d4703f [gaim-migrate @ 3285]
Sean Egan <seanegan@pidgin.im>
parents: 3214
diff changeset
2889
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
2890 if (info->present & AIM_USERINFO_PRESENT_FLAGS) {
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
2891 if (info->flags & AIM_FLAG_AWAY)
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2892 buddy_is_away = TRUE;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2893 }
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2894
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2895 if (info->present & AIM_USERINFO_PRESENT_ICQEXTSTATUS) {
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
2896 type = (info->icqinfo.status << 16);
3013
b937e542f50e [gaim-migrate @ 3026]
Sean Egan <seanegan@pidgin.im>
parents: 3009
diff changeset
2897 if (!(info->icqinfo.status & AIM_ICQ_STATE_CHAT) &&
b937e542f50e [gaim-migrate @ 3026]
Sean Egan <seanegan@pidgin.im>
parents: 3009
diff changeset
2898 (info->icqinfo.status != AIM_ICQ_STATE_NORMAL)) {
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2899 buddy_is_away = TRUE;
3013
b937e542f50e [gaim-migrate @ 3026]
Sean Egan <seanegan@pidgin.im>
parents: 3009
diff changeset
2900 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2901 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2902
7141
431a007467e8 [gaim-migrate @ 7708]
Mark Doliner <markdoliner@pidgin.im>
parents: 7129
diff changeset
2903 if (caps & AIM_CAPS_ICQ_DIRECT)
431a007467e8 [gaim-migrate @ 7708]
Mark Doliner <markdoliner@pidgin.im>
parents: 7129
diff changeset
2904 caps ^= AIM_CAPS_ICQ_DIRECT;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2905
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2906 if (info->present & AIM_USERINFO_PRESENT_IDLE) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2907 time(&time_idle);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2908 time_idle -= info->idletime*60;
9295
a0ea1692dde9 [gaim-migrate @ 10098]
Mark Doliner <markdoliner@pidgin.im>
parents: 9285
diff changeset
2909 /* 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
2910 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2911
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
2912 if (info->present & AIM_USERINFO_PRESENT_ONLINESINCE)
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
2913 signon = info->onlinesince;
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
2914 else if (info->present & AIM_USERINFO_PRESENT_SESSIONLEN)
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
2915 signon = time(NULL) - info->sessionlen;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2916
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
2917 if (!aim_sncmp(gaim_account_get_username(account), info->sn))
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
2918 gaim_connection_set_display_name(gc, info->sn);
2305
9ba346379088 [gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2303
diff changeset
2919
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
2920 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
2921 if (!bi) {
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
2922 bi = g_new0(struct buddyinfo, 1);
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
2923 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
2924 }
4739
7263e3ceab43 [gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents: 4738
diff changeset
2925 bi->typingnot = FALSE;
7263e3ceab43 [gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents: 4738
diff changeset
2926 bi->ico_informed = FALSE;
6857
fd79da71b071 [gaim-migrate @ 7402]
Nickolai Zeldovich
parents: 6846
diff changeset
2927 bi->ipaddr = info->icqinfo.ipaddr;
fd79da71b071 [gaim-migrate @ 7402]
Nickolai Zeldovich
parents: 6846
diff changeset
2928
fd79da71b071 [gaim-migrate @ 7402]
Nickolai Zeldovich
parents: 6846
diff changeset
2929 /* Available message stuff */
6292
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
2930 free(bi->availmsg);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
2931 if (info->avail != NULL)
8225
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
2932 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
2933 else
6292
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
2934 bi->availmsg = NULL;
4732
a0857625cadb [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4705
diff changeset
2935
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
2936 /* Server stored icon stuff */
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2937 if (info->iconcsumlen) {
7125
69f5aeec3f5b [gaim-migrate @ 7692]
Nathan Walp <nwalp@pidgin.im>
parents: 7118
diff changeset
2938 const char *filename = NULL, *saved_b16 = NULL;
9801
c061a7280591 [gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9797
diff changeset
2939 char *b16 = NULL, *filepath = NULL;
7093
2fef5364eb2b [gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents: 7091
diff changeset
2940 GaimBuddy *b = NULL;
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2941
7106
eaeff5775818 [gaim-migrate @ 7671]
Christian Hammond <chipx86@chipx86.com>
parents: 7098
diff changeset
2942 b16 = gaim_base16_encode(info->iconcsum, info->iconcsumlen);
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
2943 b = gaim_find_buddy(account, info->sn);
7093
2fef5364eb2b [gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents: 7091
diff changeset
2944 /*
2fef5364eb2b [gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents: 7091
diff changeset
2945 * 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
2946 * we want to know.
2fef5364eb2b [gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents: 7091
diff changeset
2947 */
7693
1f736efbd12d [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
2948 filename = gaim_blist_node_get_string((GaimBlistNode*)b, "buddy_icon");
7093
2fef5364eb2b [gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents: 7091
diff changeset
2949 if (filename != NULL) {
2fef5364eb2b [gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents: 7091
diff changeset
2950 if (g_file_test(filename, G_FILE_TEST_EXISTS))
7693
1f736efbd12d [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
2951 saved_b16 = gaim_blist_node_get_string((GaimBlistNode*)b,
1f736efbd12d [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
2952 "icon_checksum");
9801
c061a7280591 [gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9797
diff changeset
2953 else {
c061a7280591 [gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9797
diff changeset
2954 filepath = g_build_filename(gaim_buddy_icons_get_cache_dir(),
c061a7280591 [gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9797
diff changeset
2955 filename, NULL);
c061a7280591 [gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9797
diff changeset
2956 if (g_file_test(filepath, G_FILE_TEST_EXISTS))
c061a7280591 [gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9797
diff changeset
2957 saved_b16 = gaim_blist_node_get_string((GaimBlistNode*)b,
c061a7280591 [gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9797
diff changeset
2958 "icon_checksum");
c061a7280591 [gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9797
diff changeset
2959 g_free(filepath);
c061a7280591 [gaim-migrate @ 10669]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9797
diff changeset
2960 }
7093
2fef5364eb2b [gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents: 7091
diff changeset
2961 } else
2fef5364eb2b [gaim-migrate @ 7658]
Mark Doliner <markdoliner@pidgin.im>
parents: 7091
diff changeset
2962 saved_b16 = NULL;
7054
b3509b4108e9 [gaim-migrate @ 7617]
Herman Bloggs <herman@bluedigits.com>
parents: 7045
diff changeset
2963
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2964 if (!b16 || !saved_b16 || strcmp(b16, saved_b16)) {
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2965 GSList *cur = od->requesticon;
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2966 while (cur && aim_sncmp((char *)cur->data, info->sn))
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2967 cur = cur->next;
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2968 if (!cur) {
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
2969 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
2970 if (od->icontimer)
8287
266eacc707ac [gaim-migrate @ 9011]
Scott Lamb
parents: 8273
diff changeset
2971 gaim_timeout_remove(od->icontimer);
8273
7882af5843e9 [gaim-migrate @ 8997]
Scott Lamb
parents: 8266
diff changeset
2972 od->icontimer = gaim_timeout_add(500, gaim_icon_timerfunc, gc);
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2973 }
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2974 }
6053
d4f75efb6cbc [gaim-migrate @ 6503]
Nathan Walp <nwalp@pidgin.im>
parents: 6052
diff changeset
2975 g_free(b16);
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2976 }
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
2977
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2978 /* XXX - Represent other ICQ statuses */
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2979 if (buddy_is_away == TRUE)
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2980 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
2981 else
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
2982 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
2983 gaim_prpl_got_user_login_time(account, info->sn, signon);
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
2984 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
2985
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
2986 if (time_idle > 0)
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
2987 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
2988 else
8a4fcc043f47 [gaim-migrate @ 10926]
Mark Doliner <markdoliner@pidgin.im>
parents: 9995
diff changeset
2989 gaim_prpl_got_user_idle(account, info->sn, FALSE, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2990
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2991 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2992 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2993
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
2994 static void gaim_check_comment(OscarData *od, const char *str) {
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
2995 if ((str == NULL) || strcmp(str, ck))
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
2996 aim_locate_setcaps(od->sess, caps_aim);
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
2997 else
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
2998 aim_locate_setcaps(od->sess, caps_aim | AIM_CAPS_SECUREIM);
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
2999 }
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
3000
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3001 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
3002 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
3003 OscarData *od = gc->proto_data;
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
3004 GaimAccount *account = gaim_connection_get_account(gc);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3005 va_list ap;
4739
7263e3ceab43 [gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents: 4738
diff changeset
3006 aim_userinfo_t *info;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3007
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3008 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3009 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3010 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3011
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
3012 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
3013
7261
4be05820d441 [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
3014 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
3015
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3016 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3017 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3018
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3019 /* BBB */
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
3020 /*
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3021 * 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
3022 * 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
3023 * 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
3024 */
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3025 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
3026 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
3027 OscarData *od = (OscarData *)gc->proto_data;
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3028 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3029 struct aim_oft_info *oft_info;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3030 va_list ap;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3031 aim_conn_t *conn, *listenerconn;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3032
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3033 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3034 "AAA - in oscar_sendfile_estblsh\n");
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3035 va_start(ap, fr);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3036 conn = va_arg(ap, aim_conn_t *);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3037 listenerconn = va_arg(ap, aim_conn_t *);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3038 va_end(ap);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3039
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3040 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, listenerconn)))
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3041 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3042
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3043 if (!(oft_info = xfer->data))
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3044 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3045
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3046 /* Stop watching listener conn; watch transfer conn instead */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3047 gaim_input_remove(xfer->watcher);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3048 aim_conn_kill(sess, &listenerconn);
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3049
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3050 oft_info->conn = conn;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3051 xfer->fd = oft_info->conn->fd;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3052
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3053 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
3054 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
3055 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
3056
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3057 /* 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
3058 aim_oft_sendheader(sess, AIM_CB_OFT_PROMPT, oft_info);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3059
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3060 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3061 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3062
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
3063 /*
5681
514fbc5374dc [gaim-migrate @ 6100]
Christian Hammond <chipx86@chipx86.com>
parents: 5679
diff changeset
3064 * 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
3065 * user in order to transfer a file.
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
3066 */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3067 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
3068 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3069 struct aim_oft_info *oft_info;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3070
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3071 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3072 "AAA - in oscar_sendfile_connected\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3073 if (!(xfer = data))
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3074 return;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3075 if (!(oft_info = xfer->data))
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3076 return;
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
3077 if (source < 0) {
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
3078 gaim_xfer_cancel_remote(xfer);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3079 return;
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
3080 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3081
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3082 xfer->fd = source;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3083 oft_info->conn->fd = source;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3084
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3085 aim_conn_completeconnect(oft_info->sess, oft_info->conn);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3086 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
3087
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3088 /* 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
3089 aim_im_sendch2_sendfile_accept(oft_info->sess, oft_info);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3090
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3091 return;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3092 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3093
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
3094 /*
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3095 * 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
3096 * 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
3097 * 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
3098 * get like totally ready to like, receive the file, kay?
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
3099 */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3100 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
3101 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
3102 OscarData *od = gc->proto_data;
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3103 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3104 struct aim_oft_info *oft_info;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3105 va_list ap;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3106 aim_conn_t *conn;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3107 fu8_t *cookie;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3108 struct aim_fileheader_t *fh;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3109
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3110 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3111 "AAA - in oscar_sendfile_prompt\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3112 va_start(ap, fr);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3113 conn = va_arg(ap, aim_conn_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3114 cookie = va_arg(ap, fu8_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3115 fh = va_arg(ap, struct aim_fileheader_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3116 va_end(ap);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3117
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3118 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn)))
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3119 return 1;
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 if (!(oft_info = xfer->data))
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3122 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3123
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3124 /* We want to stop listening with a normal thingy */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3125 gaim_input_remove(xfer->watcher);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3126 xfer->watcher = 0;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3127
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3128 /* They sent us some information about the file they're sending */
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3129 memcpy(&oft_info->fh, fh, sizeof(*fh));
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3130
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3131 /* Fill in the cookie */
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3132 memcpy(&oft_info->fh.bcookie, oft_info->cookie, 8);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3133
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3134 /* 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
3135 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
3136 gaim_xfer_start(xfer, xfer->fd, NULL, 0);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3137
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3138 return 0;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3139 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3140
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
3141 /*
4657
24c70a9dec22 [gaim-migrate @ 4968]
Mark Doliner <markdoliner@pidgin.im>
parents: 4656
diff changeset
3142 * 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
3143 * 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
3144 */
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3145 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
3146 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
3147 OscarData *od = gc->proto_data;
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3148 GaimXfer *xfer;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3149 va_list ap;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3150 aim_conn_t *conn;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3151 fu8_t *cookie;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3152 struct aim_fileheader_t *fh;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3153
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3154 gaim_debug_info("oscar", "AAA - in oscar_sendfile_ack\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3155 va_start(ap, fr);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3156 conn = va_arg(ap, aim_conn_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3157 cookie = va_arg(ap, fu8_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3158 fh = va_arg(ap, struct aim_fileheader_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3159 va_end(ap);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3160
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3161 if (!(xfer = oscar_find_xfer_by_cookie(od->file_transfers, cookie)))
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3162 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3163
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3164 /* We want to stop listening with a normal thingy */
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3165 gaim_input_remove(xfer->watcher);
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3166 xfer->watcher = 0;
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3167
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3168 gaim_xfer_start(xfer, xfer->fd, NULL, 0);
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 return 0;
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3171 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3172
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3173 /*
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3174 * 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
3175 * so we can close our direct connection and what not.
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3176 */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3177 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
3178 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
3179 OscarData *od = gc->proto_data;
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3180 GaimXfer *xfer;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3181 va_list ap;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3182 aim_conn_t *conn;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3183 fu8_t *cookie;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3184 struct aim_fileheader_t *fh;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3185
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3186 gaim_debug_info("oscar", "AAA - in oscar_sendfile_done\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3187 va_start(ap, fr);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3188 conn = va_arg(ap, aim_conn_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3189 cookie = va_arg(ap, fu8_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3190 fh = va_arg(ap, struct aim_fileheader_t *);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3191 va_end(ap);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3192
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3193 if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn)))
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3194 return 1;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3195
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3196 xfer->fd = conn->fd;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3197 gaim_xfer_end(xfer);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3198
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3199 return 0;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3200 }
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3201
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3202 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
3203 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
3204 OscarData *od = gc->proto_data;
8708
31a7bd5a32f4 [gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents: 8701
diff changeset
3205 GaimAccount *account = gaim_connection_get_account(gc);
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
3206 GaimConvImFlags flags = 0;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3207 struct buddyinfo *bi;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3208 const char *iconfile;
9806
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3209 GString *message;
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3210 gchar *tmp;
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3211 aim_mpmsg_section_t *curpart;
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3212
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3213 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
3214 userinfo->sn, args->mpmsg.numparts);
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3215
8708
31a7bd5a32f4 [gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents: 8701
diff changeset
3216 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
3217 if (!bi) {
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3218 bi = g_new0(struct buddyinfo, 1);
8708
31a7bd5a32f4 [gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents: 8701
diff changeset
3219 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
3220 }
2273
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2249
diff changeset
3221
b7c08d737d81 [gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2249
diff changeset
3222 if (args->icbmflags & AIM_IMFLAGS_AWAY)
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
3223 flags |= GAIM_CONV_IM_AUTO_RESP;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3224
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3225 if (args->icbmflags & AIM_IMFLAGS_TYPINGNOT)
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3226 bi->typingnot = TRUE;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3227 else
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3228 bi->typingnot = FALSE;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3229
4380
c7c7beab8e56 [gaim-migrate @ 4646]
Mark Doliner <markdoliner@pidgin.im>
parents: 4374
diff changeset
3230 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
3231 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3232 "%s has an icon\n", userinfo->sn);
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3233 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
3234 bi->ico_need = TRUE;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3235 bi->ico_len = args->iconlen;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3236 bi->ico_csum = args->iconsum;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
3237 bi->ico_time = args->iconstamp;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3238 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3239 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3240
8708
31a7bd5a32f4 [gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents: 8701
diff changeset
3241 if ((iconfile = gaim_account_get_buddy_icon(account)) &&
7406
b0e59cabc315 [gaim-migrate @ 8006]
Sean Egan <seanegan@pidgin.im>
parents: 7389
diff changeset
3242 (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
3243 FILE *file;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3244 struct stat st;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3245
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3246 if (!stat(iconfile, &st)) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3247 char *buf = g_malloc(st.st_size);
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3248 file = fopen(iconfile, "rb");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3249 if (file) {
9532
32470c5a1d58 [gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 9481
diff changeset
3250 /* XXX - Use g_file_get_contents() */
2603
0c39616168c9 [gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2597
diff changeset
3251 int len = fread(buf, 1, st.st_size, file);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3252 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3253 "Sending buddy icon to %s (%d bytes, "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3254 "%lu reported)\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3255 userinfo->sn, len, st.st_size);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3256 aim_im_sendch2_icon(sess, userinfo->sn, buf, st.st_size,
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3257 st.st_mtime, aimutil_iconsum(buf, st.st_size));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3258 fclose(file);
2336
43d65c408209 [gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2315
diff changeset
3259 } else
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3260 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3261 "Can't open buddy icon file!\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3262 g_free(buf);
2336
43d65c408209 [gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2315
diff changeset
3263 } else
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3264 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3265 "Can't stat buddy icon file!\n");
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3266 }
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3267
9806
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3268 message = g_string_new("");
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3269 curpart = args->mpmsg.parts;
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3270 while (curpart != NULL) {
9908
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
3271 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
3272 curpart->data, curpart->datalen);
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3273 if (tmp != NULL) {
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3274 g_string_append(message, tmp);
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3275 g_free(tmp);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3276 }
9806
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3277
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3278 curpart = curpart->next;
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3279 }
6b4ad56649c6 [gaim-migrate @ 10674]
Mark Doliner <markdoliner@pidgin.im>
parents: 9801
diff changeset
3280 tmp = g_string_free(message, FALSE);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3281
8666
582a118d6b91 [gaim-migrate @ 9418]
Mark Doliner <markdoliner@pidgin.im>
parents: 8660
diff changeset
3282 /*
8995
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
3283 * 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
3284 * 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
3285 * so any HTML we receive is intended to be displayed
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
3286 *
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
3287 * 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
3288 * they need to be special-cased somehow.
8666
582a118d6b91 [gaim-migrate @ 9418]
Mark Doliner <markdoliner@pidgin.im>
parents: 8660
diff changeset
3289 */
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
3290 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
3291 /* 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
3292 gchar *tmp2 = gaim_escape_html(tmp);
8493
9a0f65deacb2 [gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents: 8476
diff changeset
3293 g_free(tmp);
9a0f65deacb2 [gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents: 8476
diff changeset
3294 tmp = tmp2;
9a0f65deacb2 [gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents: 8476
diff changeset
3295 }
9a0f65deacb2 [gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents: 8476
diff changeset
3296
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6907
diff changeset
3297 serv_got_im(gc, userinfo->sn, tmp, flags, time(NULL));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3298 g_free(tmp);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3299
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3300 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3301 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3302
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3303 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
3304 GaimConnection *gc;
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3305 GaimAccount *account;
9070
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3306 OscarData *od;
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3307 const char *username = NULL;
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3308 char *message = NULL;
9070
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3309
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3310 g_return_val_if_fail(sess != NULL, 0);
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3311 g_return_val_if_fail(sess->aux_data != NULL, 0);
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3312
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3313 gc = sess->aux_data;
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3314 account = gaim_connection_get_account(gc);
9070
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3315 od = gc->proto_data;
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3316 username = gaim_account_get_username(account);
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3317
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3318 if (args == NULL)
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
3319 return 0;
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3320
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3321 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
3322 userinfo->sn, args->status);
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3323
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3324 if (args->msg != NULL)
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3325 {
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3326 if (args->encoding != NULL)
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3327 {
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3328 char *encoding = NULL;
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3329 encoding = oscar_encoding_extract(args->encoding);
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3330 message = oscar_encoding_to_utf8(encoding, args->msg, args->msglen);
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3331 g_free(encoding);
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3332 } else {
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3333 if (g_utf8_validate(args->msg, args->msglen, NULL))
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3334 message = g_strdup(args->msg);
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3335 }
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3336 }
2869
3165d3aff6c0 [gaim-migrate @ 2882]
Adam Fritzler <mid@auk.cx>
parents: 2866
diff changeset
3337
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3338 if (args->reqclass & AIM_CAPS_CHAT) {
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
3339 char *name;
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
3340 GHashTable *components;
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
3341
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3342 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
3343 g_free(message);
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
3344 return 1;
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3345 }
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
3346 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
3347 g_free);
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
3348 name = extract_name(args->info.chat.roominfo.name);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
3349 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
3350 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
3351 serv_got_chat_invite(gc,
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3352 name ? name : args->info.chat.roominfo.name,
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3353 userinfo->sn,
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3354 message,
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
3355 components);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3356 if (name)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3357 g_free(name);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3358 } else if (args->reqclass & AIM_CAPS_SENDFILE) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3359 /* BBB */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3360 if (args->status == AIM_RENDEZVOUS_PROPOSE) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3361 /* Someone wants to send a file (or files) to us */
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3362 GaimXfer *xfer;
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3363 struct aim_oft_info *oft_info;
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3364
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3365 if (!args->cookie || !args->port || !args->verifiedip ||
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3366 !args->info.sendfile.filename || !args->info.sendfile.totsize ||
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3367 !args->info.sendfile.totfiles || !args->reqclass) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3368 gaim_debug_warning("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3369 "%s tried to send you a file with incomplete "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3370 "information.\n", userinfo->sn);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3371 if (args->proxyip)
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3372 gaim_debug_warning("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3373 "IP for a proxy server was given. Gaim "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3374 "does not support this yet.\n");
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3375 g_free(message);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3376 return 1;
4656
b676f986e7e3 [gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents: 4652
diff changeset
3377 }
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3378
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3379 if (args->info.sendfile.subtype == AIM_OFT_SUBTYPE_SEND_DIR) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3380 /* 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
3381 * 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
3382 * directories that look like 'dirname\*' -- arl */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3383 char *tmp = strrchr(args->info.sendfile.filename, '\\');
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3384 if (tmp && (tmp[1] == '*')) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3385 tmp[0] = '\0';
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3386 }
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3387 gaim_debug_warning("oscar",
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
3388 "We're receiving a whole directory! What fun! "
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
3389 "Especially since we don't support that!\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3390 }
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3391
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3392 /* Build the file transfer handle */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3393 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
3394 xfer->remote_ip = g_strdup(args->verifiedip);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3395 xfer->remote_port = args->port;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3396 gaim_xfer_set_filename(xfer, args->info.sendfile.filename);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3397 gaim_xfer_set_size(xfer, args->info.sendfile.totsize);
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3398 gaim_xfer_set_message(xfer, message);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3399
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3400 /* Create the oscar-specific data */
5163
c4e7e5cde47d [gaim-migrate @ 5527]
Mark Doliner <markdoliner@pidgin.im>
parents: 5149
diff changeset
3401 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
3402 if (args->proxyip)
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3403 oft_info->proxyip = g_strdup(args->proxyip);
4898
285e9ff6eeb8 [gaim-migrate @ 5230]
Mark Doliner <markdoliner@pidgin.im>
parents: 4889
diff changeset
3404 if (args->verifiedip)
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3405 oft_info->verifiedip = g_strdup(args->verifiedip);
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
3406 xfer->data = oft_info;
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 /* Setup our I/O op functions */
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
3409 gaim_xfer_set_init_fnc(xfer, oscar_xfer_init_recv);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3410 gaim_xfer_set_end_fnc(xfer, oscar_xfer_end);
8446
79124efa78c9 [gaim-migrate @ 9176]
Tim Ringenbach <marv@pidgin.im>
parents: 8437
diff changeset
3411 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
3412 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
3413 gaim_xfer_set_ack_fnc(xfer, oscar_xfer_ack_recv);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3414
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3415 /* Keep track of this transfer for later */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3416 od->file_transfers = g_slist_append(od->file_transfers, xfer);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3417
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3418 /* Now perform the request */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3419 gaim_xfer_request(xfer);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3420 } else if (args->status == AIM_RENDEZVOUS_CANCEL) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3421 /* The other user wants to cancel a file transfer */
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3422 GaimXfer *xfer;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3423 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3424 "AAA - File transfer canceled by remote user\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3425 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
3426 gaim_xfer_cancel_remote(xfer);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3427 } else if (args->status == AIM_RENDEZVOUS_ACCEPT) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3428 /*
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3429 * This gets sent by the receiver of a file
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3430 * as they connect directly to us. If we don't
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3431 * get this, then maybe a third party connected
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3432 * to us, and we shouldn't send them anything.
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3433 */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3434 } else {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3435 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3436 "unknown rendezvous status!\n");
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3437 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3438 } else if (args->reqclass & AIM_CAPS_GETFILE) {
8092
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 8077
diff changeset
3439 } else if (args->reqclass & AIM_CAPS_TALK) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3440 } else if (args->reqclass & AIM_CAPS_BUDDYICON) {
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3441 gaim_buddy_icons_set_for_user(account, userinfo->sn,
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3442 args->info.icon.icon,
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
3443 args->info.icon.length);
6871
ff864e84ca84 [gaim-migrate @ 7417]
Mark Doliner <markdoliner@pidgin.im>
parents: 6857
diff changeset
3444 } else if (args->reqclass & AIM_CAPS_DIRECTIM) {
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3445 /* 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
3446 struct ask_direct *d = g_new0(struct ask_direct, 1);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3447 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
3448 char buf[256];
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3449
4212
1a596d7f28ae [gaim-migrate @ 4449]
Brandon Scott
parents: 4207
diff changeset
3450 if (!args->verifiedip) {
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
3451 /* 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
3452 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3453 "directim kill blocked (%s)\n", userinfo->sn);
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3454 g_free(message);
4650
5b2338bb19fd [gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents: 4649
diff changeset
3455 return 1;
4212
1a596d7f28ae [gaim-migrate @ 4449]
Brandon Scott
parents: 4207
diff changeset
3456 }
1a596d7f28ae [gaim-migrate @ 4449]
Brandon Scott
parents: 4207
diff changeset
3457
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3458 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3459 "%s received direct im request from %s (%s)\n",
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
3460 username, userinfo->sn, args->clientip);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3461
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3462 d->gc = gc;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3463 d->sn = g_strdup(userinfo->sn);
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
3464 /* 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
3465 * Besides, if the clientip is wrong, we'll probably timeout faster,
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
3466 * and then ask them to connect to us. */
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
3467 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
3468 memcpy(d->cookie, args->cookie, 8);
9070
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3469 if (dim && !dim->connected && aim_odc_getcookie(dim->conn) && args->cookie &&
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3470 (!memcmp(aim_odc_getcookie(dim->conn), args->cookie, 8))) {
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3471
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3472 oscar_direct_im_destroy(od, dim);
8984
d599eadc8967 [gaim-migrate @ 9759]
Tim Ringenbach <marv@pidgin.im>
parents: 8983
diff changeset
3473 d->donttryagain = TRUE;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3474 accept_direct_im_request(d);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3475 } else {
8983
327ca6a682ed [gaim-migrate @ 9758]
Tim Ringenbach <marv@pidgin.im>
parents: 8982
diff changeset
3476 if (dim && !dim->connected)
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3477 gaim_debug_warning("oscar", "DirectIM: received direct im request while "
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3478 "already connected to that buddy!");
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3479 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
3480
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3481 gaim_request_action(gc, NULL, buf,
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3482 _("This requires a direct connection between "
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3483 "the two computers and is necessary for IM "
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3484 "Images. Because your IP address will be "
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3485 "revealed, this may be considered a privacy "
9972
f39adb92a177 [gaim-migrate @ 10883]
Mark Doliner <markdoliner@pidgin.im>
parents: 9971
diff changeset
3486 "risk."),
f39adb92a177 [gaim-migrate @ 10883]
Mark Doliner <markdoliner@pidgin.im>
parents: 9971
diff changeset
3487 GAIM_DEFAULT_ACTION_NONE, d, 2,
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3488 _("Connect"), G_CALLBACK(accept_direct_im_request),
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3489 _("Cancel"), G_CALLBACK(destroy_direct_im_request));
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3490 /* FIXME: we should actually send a packet on cancel */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3491 }
8708
31a7bd5a32f4 [gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents: 8701
diff changeset
3492 } else if (args->reqclass & AIM_CAPS_ICQSERVERRELAY) {
31a7bd5a32f4 [gaim-migrate @ 9461]
Mark Doliner <markdoliner@pidgin.im>
parents: 8701
diff changeset
3493 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
3494 } else {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3495 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3496 "Unknown reqclass %hu\n", args->reqclass);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3497 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3498
9933
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3499 g_free(message);
61bd3fadbfe6 [gaim-migrate @ 10825]
Dave West <kat@users.sourceforge.net>
parents: 9927
diff changeset
3500
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3501 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3502 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3503
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3504 /*
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3505 * Authorization Functions
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3506 * 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
3507 * methods of authorization (SSI and old-school channel 4 ICBM)
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3508 */
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3509 /* When you ask other people for authorization */
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3510 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
3511 GaimConnection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3512
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
3513 if (g_list_find(gaim_connections_get_all(), gc)) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
3514 OscarData *od = gc->proto_data;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3515 GaimBuddy *buddy = gaim_find_buddy(gc->account, data->name);
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3516 GaimGroup *group = gaim_find_buddys_group(buddy);
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3517 if (buddy && group) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3518 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3519 "ssi: adding buddy %s to group %s\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3520 buddy->name, group->name);
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
3521 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
3522 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
3523 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
3524 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3525 }
4337
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
3526 }
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
3527
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
3528 static void gaim_auth_request_msgprompt(struct name_data *data) {
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
3529 gaim_request_input(data->gc, NULL, _("Authorization Request Message:"),
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8670
diff changeset
3530 NULL, _("Please authorize me!"), TRUE, FALSE, NULL,
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
3531 _("OK"), G_CALLBACK(gaim_auth_request),
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
3532 _("Cancel"), G_CALLBACK(oscar_free_name_data),
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
3533 data);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3534 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3535
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3536 static void gaim_auth_dontrequest(struct name_data *data) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3537 GaimConnection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3538
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
3539 if (g_list_find(gaim_connections_get_all(), gc)) {
8151
195a587b6c32 [gaim-migrate @ 8863]
Mark Doliner <markdoliner@pidgin.im>
parents: 8150
diff changeset
3540 /* Remove from local list */
195a587b6c32 [gaim-migrate @ 8863]
Mark Doliner <markdoliner@pidgin.im>
parents: 8150
diff changeset
3541 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
3542 gaim_blist_remove_buddy(b);
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3543 }
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3544
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
3545 oscar_free_name_data(data);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3546 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3547
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3548
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3549 static void gaim_auth_sendrequest(GaimConnection *gc, char *name) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3550 struct name_data *data = g_new(struct name_data, 1);
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3551 GaimBuddy *buddy;
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3552 gchar *dialog_msg, *nombre;
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3553
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
3554 buddy = gaim_find_buddy(gc->account, name);
9620
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
3555 if (buddy && (gaim_buddy_get_alias_only(buddy)))
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
3556 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
3557 else
4830
d0f1945b27b7 [gaim-migrate @ 5155]
Mark Doliner <markdoliner@pidgin.im>
parents: 4829
diff changeset
3558 nombre = NULL;
d0f1945b27b7 [gaim-migrate @ 5155]
Mark Doliner <markdoliner@pidgin.im>
parents: 4829
diff changeset
3559
d0f1945b27b7 [gaim-migrate @ 5155]
Mark Doliner <markdoliner@pidgin.im>
parents: 4829
diff changeset
3560 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
3561 data->gc = gc;
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3562 data->name = g_strdup(name);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3563 data->nick = NULL;
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3564
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3565 gaim_request_action(gc, NULL, _("Request Authorization"), dialog_msg,
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3566 0, data, 2,
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3567 _("Request Authorization"),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3568 G_CALLBACK(gaim_auth_request_msgprompt),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3569 _("Cancel"), G_CALLBACK(gaim_auth_dontrequest));
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3570
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3571 g_free(dialog_msg);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3572 g_free(nombre);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3573 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
3574
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3575
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3576 static void gaim_auth_sendrequest_menu(GaimBlistNode *node, gpointer ignored) {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3577 GaimBuddy *buddy;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3578 GaimConnection *gc;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3579
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3580 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node));
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3581
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3582 buddy = (GaimBuddy *) node;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3583 gc = gaim_account_get_connection(buddy->account);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3584 gaim_auth_sendrequest(gc, buddy->name);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3585 }
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
3586
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3587 /* When other people ask you for authorization */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3588 static void gaim_auth_grant(struct name_data *data) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3589 GaimConnection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3590
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
3591 if (g_list_find(gaim_connections_get_all(), gc)) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
3592 OscarData *od = gc->proto_data;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
3593 #ifdef NOSSI
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
3594 GaimBuddy *buddy;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3595 gchar message;
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3596 message = 0;
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
3597 buddy = gaim_find_buddy(gc->account, data->name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3598 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
3599 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
3600 #else
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
3601 aim_ssi_sendauthreply(od->sess, data->name, 0x01, NULL);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3602 #endif
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3603 }
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3604
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
3605 oscar_free_name_data(data);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3606 }
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3607
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3608 /* When other people ask you for authorization */
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3609 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
3610 GaimConnection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3611
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
3612 if (g_list_find(gaim_connections_get_all(), gc)) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
3613 OscarData *od = gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3614 #ifdef NOSSI
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3615 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
3616 #else
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
3617 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
3618 #endif
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3619 }
4337
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
3620 }
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
3621
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
3622 static void gaim_auth_dontgrant_msgprompt(struct name_data *data) {
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
3623 gaim_request_input(data->gc, NULL, _("Authorization Denied Message:"),
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8670
diff changeset
3624 NULL, _("No reason given."), TRUE, FALSE, NULL,
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
3625 _("OK"), G_CALLBACK(gaim_auth_dontgrant),
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
3626 _("Cancel"), G_CALLBACK(oscar_free_name_data),
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
3627 data);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3628 }
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3629
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
3630 /* When someone sends you buddies */
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
3631 static void gaim_icq_buddyadd(struct name_data *data) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
3632 GaimConnection *gc = data->gc;
4244
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3633
5580
a5a3e6dfb409 [gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents: 5579
diff changeset
3634 if (g_list_find(gaim_connections_get_all(), gc)) {
7060
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 7054
diff changeset
3635 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
3636 }
3a0952e07004 [gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents: 4243
diff changeset
3637
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
3638 oscar_free_name_data(data);
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3639 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3640
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3641 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
3642 GaimConnection *gc = sess->aux_data;
9908
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
3643 GaimAccount *account = gaim_connection_get_account(gc);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3644 gchar **msg1, **msg2;
6051
6d481c30603c [gaim-migrate @ 6501]
Mark Doliner <markdoliner@pidgin.im>
parents: 6040
diff changeset
3645 int i, numtoks;
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3646
4121
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
3647 if (!args->type || !args->msg || !args->uin)
42fc01bee50b [gaim-migrate @ 4338]
Rob Flynn <gaim@robflynn.com>
parents: 4120
diff changeset
3648 return 1;
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3649
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3650 gaim_debug_info("oscar",
9908
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
3651 "Received a channel 4 message of type 0x%02hhx.\n",
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
3652 args->type);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3653
9919
938f9e7a4db9 [gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
3654 /*
938f9e7a4db9 [gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
3655 * Split up the message at the delimeter character, then convert each
938f9e7a4db9 [gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
3656 * 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
3657 * 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
3658 * character in whatever encoding the message was sent in. Type 1
938f9e7a4db9 [gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
3659 * 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
3660 * 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
3661 * most 1 baby string.
938f9e7a4db9 [gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
3662 */
938f9e7a4db9 [gaim-migrate @ 10811]
Mark Doliner <markdoliner@pidgin.im>
parents: 9917
diff changeset
3663 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
3664 for (numtoks=0; msg1[numtoks]; numtoks++);
6d481c30603c [gaim-migrate @ 6501]
Mark Doliner <markdoliner@pidgin.im>
parents: 6040
diff changeset
3665 msg2 = (gchar **)g_malloc((numtoks+1)*sizeof(gchar *));
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3666 for (i=0; msg1[i]; i++) {
7478
a7df4df98778 [gaim-migrate @ 8091]
Herman Bloggs <herman@bluedigits.com>
parents: 7475
diff changeset
3667 gaim_str_strip_cr(msg1[i]);
9908
e9b6e5a8bf00 [gaim-migrate @ 10800]
Mark Doliner <markdoliner@pidgin.im>
parents: 9879
diff changeset
3668 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
3669 }
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3670 msg2[i] = NULL;
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3671
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
3672 switch (args->type) {
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3673 case 0x01: { /* MacICQ message or basic offline message */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3674 if (i >= 1) {
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
3675 gchar *uin = g_strdup_printf("%u", args->uin);
8493
9a0f65deacb2 [gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents: 8476
diff changeset
3676 gchar *tmp;
9a0f65deacb2 [gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents: 8476
diff changeset
3677
9a0f65deacb2 [gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents: 8476
diff changeset
3678 /* 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
3679 tmp = gaim_escape_html(msg2[0]);
8493
9a0f65deacb2 [gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents: 8476
diff changeset
3680
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3681 if (t) { /* This is an offline message */
9680
170d9c1ab218 [gaim-migrate @ 10532]
Dave West <kat@users.sourceforge.net>
parents: 9661
diff changeset
3682 /* 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
3683 #ifdef HAVE_TM_GMTOFF
9724
7e977ad7ccef [gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents: 9713
diff changeset
3684 time_t now;
7e977ad7ccef [gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents: 9713
diff changeset
3685 struct tm *tm;
7e977ad7ccef [gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents: 9713
diff changeset
3686 now = time(NULL);
7e977ad7ccef [gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents: 9713
diff changeset
3687 tm = localtime(&now);
7e977ad7ccef [gaim-migrate @ 10585]
Mark Doliner <markdoliner@pidgin.im>
parents: 9713
diff changeset
3688 t += tm->tm_gmtoff;
9698
d83c7c4b0ccc [gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents: 9680
diff changeset
3689 #else
d83c7c4b0ccc [gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents: 9680
diff changeset
3690 # ifdef HAVE_TIMEZONE
9680
170d9c1ab218 [gaim-migrate @ 10532]
Dave West <kat@users.sourceforge.net>
parents: 9661
diff changeset
3691 tzset();
170d9c1ab218 [gaim-migrate @ 10532]
Dave West <kat@users.sourceforge.net>
parents: 9661
diff changeset
3692 t -= timezone;
9698
d83c7c4b0ccc [gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents: 9680
diff changeset
3693 # endif
d83c7c4b0ccc [gaim-migrate @ 10557]
Mark Doliner <markdoliner@pidgin.im>
parents: 9680
diff changeset
3694 #endif
8514
8c021f9defc6 [gaim-migrate @ 9252]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8501
diff changeset
3695 serv_got_im(gc, uin, tmp, 0, t);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3696 } else { /* This is a message from MacICQ/Miranda */
8514
8c021f9defc6 [gaim-migrate @ 9252]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8501
diff changeset
3697 serv_got_im(gc, uin, tmp, 0, time(NULL));
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3698 }
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3699 g_free(uin);
8493
9a0f65deacb2 [gaim-migrate @ 9228]
Mark Doliner <markdoliner@pidgin.im>
parents: 8476
diff changeset
3700 g_free(tmp);
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3701 }
3316
43bb95f6167a [gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents: 3279
diff changeset
3702 } break;
43bb95f6167a [gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents: 3279
diff changeset
3703
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3704 case 0x04: { /* Someone sent you a URL */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3705 if (i >= 2) {
7385
000d887035a2 [gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents: 7376
diff changeset
3706 if (msg2[1] != NULL) {
000d887035a2 [gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents: 7376
diff changeset
3707 gchar *uin = g_strdup_printf("%u", args->uin);
000d887035a2 [gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents: 7376
diff changeset
3708 gchar *message = g_strdup_printf("<A HREF=\"%s\">%s</A>",
000d887035a2 [gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents: 7376
diff changeset
3709 msg2[1],
000d887035a2 [gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents: 7376
diff changeset
3710 (msg2[0] && msg2[0][0]) ? msg2[0] : msg2[1]);
000d887035a2 [gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents: 7376
diff changeset
3711 serv_got_im(gc, uin, message, 0, time(NULL));
000d887035a2 [gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents: 7376
diff changeset
3712 g_free(uin);
000d887035a2 [gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents: 7376
diff changeset
3713 g_free(message);
000d887035a2 [gaim-migrate @ 7980]
Mark Doliner <markdoliner@pidgin.im>
parents: 7376
diff changeset
3714 }
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3715 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3716 } break;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3717
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3718 case 0x06: { /* Someone requested authorization */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3719 if (i >= 6) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3720 struct name_data *data = g_new(struct name_data, 1);
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
3721 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
3722 gaim_debug_info("oscar",
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
3723 "Received an authorization request from UIN %u\n",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3724 args->uin);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3725 data->gc = gc;
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
3726 data->name = g_strdup_printf("%u", args->uin);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3727 data->nick = NULL;
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3728
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3729 gaim_request_action(gc, NULL, _("Authorization Request"),
9948
2642975ffb85 [gaim-migrate @ 10844]
Dave West <kat@users.sourceforge.net>
parents: 9944
diff changeset
3730 dialog_msg, GAIM_DEFAULT_ACTION_NONE, data,
2642975ffb85 [gaim-migrate @ 10844]
Dave West <kat@users.sourceforge.net>
parents: 9944
diff changeset
3731 2, _("Authorize"),
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3732 G_CALLBACK(gaim_auth_grant),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3733 _("Deny"),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3734 G_CALLBACK(gaim_auth_dontgrant_msgprompt));
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3735 g_free(dialog_msg);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3736 }
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3737 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3738
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3739 case 0x07: { /* Someone has denied you authorization */
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3740 if (i >= 1) {
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
3741 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
3742 gaim_notify_info(gc, NULL, _("ICQ authorization denied."),
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3743 dialog_msg);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3744 g_free(dialog_msg);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3745 }
3141
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
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3748 case 0x08: { /* Someone has granted you authorization */
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
3749 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
3750 gaim_notify_info(gc, NULL, "ICQ authorization accepted.",
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
3751 dialog_msg);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3752 g_free(dialog_msg);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3753 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3754
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
3755 case 0x09: { /* Message from the Godly ICQ server itself, I think */
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
3756 if (i >= 5) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
3757 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
3758 gaim_notify_info(gc, NULL, "ICQ Server Message", dialog_msg);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
3759 g_free(dialog_msg);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
3760 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
3761 } break;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
3762
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3763 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
3764 if (i >= 6) {
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3765 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
3766 gaim_notify_info(gc, NULL, "ICQ Page", dialog_msg);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3767 g_free(dialog_msg);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3768 }
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3769 } break;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3770
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3771 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
3772 if (i >= 6) {
4308
8eefe9f67895 [gaim-migrate @ 4562]
Mark Doliner <markdoliner@pidgin.im>
parents: 4303
diff changeset
3773 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
3774 gaim_notify_info(gc, NULL, "ICQ Email", dialog_msg);
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3775 g_free(dialog_msg);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3776 }
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3777 } break;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3778
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3779 case 0x12: {
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3780 /* 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
3781 /* Someone added you to their buddy list? */
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3782 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3783
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
3784 case 0x13: { /* Someone has sent you some ICQ buddies */
7631
0e9e516bb6c3 [gaim-migrate @ 8255]
Nathan Walp <nwalp@pidgin.im>
parents: 7621
diff changeset
3785 guint i, num;
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3786 gchar **text;
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
3787 text = g_strsplit(args->msg, "\376", 0);
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3788 if (text) {
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3789 num = 0;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3790 for (i=0; i<strlen(text[0]); i++)
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3791 num = num*10 + text[0][i]-48;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3792 for (i=0; i<num; i++) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
3793 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
3794 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
3795 data->gc = gc;
4790
765a98790ede [gaim-migrate @ 5110]
Mark Doliner <markdoliner@pidgin.im>
parents: 4785
diff changeset
3796 data->name = g_strdup(text[i*2+1]);
765a98790ede [gaim-migrate @ 5110]
Mark Doliner <markdoliner@pidgin.im>
parents: 4785
diff changeset
3797 data->nick = g_strdup(text[i*2+2]);
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3798
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
3799 gaim_request_action(gc, NULL, message,
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
3800 _("Do you want to add this buddy "
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
3801 "to your buddy list?"),
9972
f39adb92a177 [gaim-migrate @ 10883]
Mark Doliner <markdoliner@pidgin.im>
parents: 9971
diff changeset
3802 GAIM_DEFAULT_ACTION_NONE, data, 2,
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
3803 _("Add"), G_CALLBACK(gaim_icq_buddyadd),
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
3804 _("Decline"), G_CALLBACK(oscar_free_name_data));
3453
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3805 g_free(message);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3806 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3807 g_strfreev(text);
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3808 }
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3809 } break;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3810
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
3811 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
3812 /* This is boring and silly. */
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3813 } break;
1c85e22614af [gaim-migrate @ 3498]
Sean Egan <seanegan@pidgin.im>
parents: 3427
diff changeset
3814
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3815 default: {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3816 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3817 "Received a channel 4 message of unknown type "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3818 "(type 0x%02hhx).\n", args->type);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3819 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3820 }
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3821
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3822 g_strfreev(msg1);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3823 g_strfreev(msg2);
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
3824
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3825 return 1;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3826 }
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3827
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3828 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
3829 fu16_t channel;
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3830 int ret = 0;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3831 aim_userinfo_t *userinfo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3832 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3833
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3834 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3835 channel = (fu16_t)va_arg(ap, unsigned int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3836 userinfo = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3837
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3838 switch (channel) {
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3839 case 1: { /* standard message */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3840 struct aim_incomingim_ch1_args *args;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3841 args = va_arg(ap, struct aim_incomingim_ch1_args *);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3842 ret = incomingim_chan1(sess, fr->conn, userinfo, args);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3843 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3844
8735
01248ea222d3 [gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents: 8733
diff changeset
3845 case 2: { /* rendezvous */
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3846 struct aim_incomingim_ch2_args *args;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3847 args = va_arg(ap, struct aim_incomingim_ch2_args *);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3848 ret = incomingim_chan2(sess, fr->conn, userinfo, args);
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3849 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3850
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3851 case 4: { /* ICQ */
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3852 struct aim_incomingim_ch4_args *args;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3853 args = va_arg(ap, struct aim_incomingim_ch4_args *);
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
3854 ret = incomingim_chan4(sess, fr->conn, userinfo, args, 0);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3855 } break;
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3856
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3857 default: {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3858 gaim_debug_warning("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3859 "ICBM received on unsupported channel (channel "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3860 "0x%04hx).", channel);
3141
3adc8022a85f [gaim-migrate @ 3156]
Rob Flynn <gaim@robflynn.com>
parents: 3140
diff changeset
3861 } break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3862 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3863
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3864 va_end(ap);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3865
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3866 return ret;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3867 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3868
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3869 static int gaim_parse_misses(aim_session_t *sess, aim_frame_t *fr, ...) {
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
3870 GaimConnection *gc = sess->aux_data;
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
3871 GaimAccount *account = gaim_connection_get_account(gc);
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3872 char *buf;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3873 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3874 fu16_t chan, nummissed, reason;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
3875 aim_userinfo_t *userinfo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3876
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
3877 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3878 chan = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3879 userinfo = va_arg(ap, aim_userinfo_t *);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3880 nummissed = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
3881 reason = (fu16_t)va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3882 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3883
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3884 switch(reason) {
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3885 case 0: /* Invalid (0) */
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3886 buf = g_strdup_printf(
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3887 ngettext(
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3888 "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
3889 "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
3890 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3891 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3892 userinfo->sn);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3893 break;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3894 case 1: /* Message too large */
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3895 buf = g_strdup_printf(
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3896 ngettext(
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3897 "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
3898 "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
3899 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3900 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3901 userinfo->sn);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3902 break;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3903 case 2: /* Rate exceeded */
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3904 buf = g_strdup_printf(
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3905 ngettext(
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3906 "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
3907 "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
3908 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3909 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3910 userinfo->sn);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3911 break;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3912 case 3: /* Evil Sender */
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3913 buf = g_strdup_printf(
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3914 ngettext(
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3915 "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
3916 "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
3917 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3918 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3919 userinfo->sn);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
3920 break;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3921 case 4: /* Evil Receiver */
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3922 buf = g_strdup_printf(
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3923 ngettext(
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3924 "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
3925 "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
3926 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3927 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3928 userinfo->sn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3929 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3930 default:
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3931 buf = g_strdup_printf(
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3932 ngettext(
4276
d1652a291840 [gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents: 4269
diff changeset
3933 "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
3934 "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
3935 nummissed),
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3936 nummissed,
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
3937 userinfo->sn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3938 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3939 }
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
3940
9627
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
3941 if (!gaim_conv_present_error(userinfo->sn, account, buf))
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
3942 gaim_notify_error(sess->aux_data, NULL, buf, NULL);
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
3943 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3944
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3945 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3946 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3947
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3948 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
3949 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
3950 OscarData *od = gc->proto_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3951
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3952 /* BBB */
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3953 switch (reason) {
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3954 case 3: { /* Decline sendfile. */
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
3955 GaimXfer *xfer;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3956 struct oscar_direct_im *dim;
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3957
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3958 gaim_debug_info("oscar",
9070
0a1be3596770 [gaim-migrate @ 9846]
Tim Ringenbach <marv@pidgin.im>
parents: 9058
diff changeset
3959 "AAA - Other user declined some sort of direct "
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3960 "connect attempt (automaticly?)\n");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
3961 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
3962 gaim_xfer_cancel_remote(xfer);
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3963 else if ((dim = oscar_direct_im_find(od, who))) {
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3964 /* AAA should use find by cookie or something here */
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3965 oscar_direct_im_disconnect(od, dim);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
3966 }
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3967 } break;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3968
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3969 default: {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
3970 gaim_debug_warning("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3971 "Received an unknown rendezvous client auto-response "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
3972 "from %s. Type 0x%04hx\n", who, reason);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3973 }
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3974
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3975 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3976
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3977 return 0;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3978 }
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
3979
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
3980 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
3981 GaimConnection *gc = sess->aux_data;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3982
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3983 switch(reason) {
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3984 case 0x0003: { /* Reply from an ICQ status message request */
9244
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
3985 char *title, *statusmsg, **splitmsg, *dialogmsg;
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
3986
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
3987 title = g_strdup_printf(_("Info for %s"), who);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3988
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3989 /* 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
3990 statusmsg = oscar_icqstatus(state);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3991 splitmsg = g_strsplit(msg, "\r\n", 0);
9244
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
3992 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
3993 g_free(statusmsg);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
3994 g_strfreev(splitmsg);
9244
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
3995
9797
b69f82378b7b [gaim-migrate @ 10665]
Evan Schoenberg <evands@pidgin.im>
parents: 9771
diff changeset
3996 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
3997
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
3998 g_free(title);
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
3999 g_free(dialogmsg);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4000 } break;
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 default: {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4003 gaim_debug_warning("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4004 "Received an unknown client auto-response from %s. "
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4005 "Type 0x%04hx\n", who, reason);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4006 } break;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4007 } /* end of switch */
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4008
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4009 return 0;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4010 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4011
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4012 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
4013 va_list ap;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4014 fu16_t chan, reason;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4015 char *who;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4016
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4017 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4018 chan = (fu16_t)va_arg(ap, unsigned int);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4019 who = va_arg(ap, char *);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4020 reason = (fu16_t)va_arg(ap, unsigned int);
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4021
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4022 if (chan == 0x0002) { /* File transfer declined */
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4023 char *cookie = va_arg(ap, char *);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4024 return gaim_parse_clientauto_ch2(sess, who, reason, cookie);
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4025 } else if (chan == 0x0004) { /* ICQ message */
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4026 fu32_t state = 0;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4027 char *msg = NULL;
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4028 if (reason == 0x0003) {
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4029 state = va_arg(ap, fu32_t);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4030 msg = va_arg(ap, char *);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4031 }
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4032 return gaim_parse_clientauto_ch4(sess, who, reason, state, msg);
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4033 }
3952
d13e1fde68d8 [gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents: 3912
diff changeset
4034
3212
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4035 va_end(ap);
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4036
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4037 return 1;
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4038 }
3c00e6f5f085 [gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents: 3210
diff changeset
4039
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4040 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
4041 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4042 fu16_t reason;
2865
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
4043 char *m;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4044
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4045 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4046 reason = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4047 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4048
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4049 gaim_debug_error("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4050 "snac threw error (reason 0x%04hx: %s)\n", reason,
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4051 (reason < msgerrreasonlen) ? msgerrreason[reason] : "unknown");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4052
2865
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
4053 m = g_strdup_printf(_("SNAC threw error: %s\n"),
5411
b3683d2acbb4 [gaim-migrate @ 5787]
Mark Doliner <markdoliner@pidgin.im>
parents: 5402
diff changeset
4054 reason < msgerrreasonlen ? _(msgerrreason[reason]) : _("Unknown error"));
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4055 gaim_notify_error(sess->aux_data, NULL, m, NULL);
2865
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
4056 g_free(m);
fbc616afa491 [gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2864
diff changeset
4057
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4058 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4059 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4060
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4061 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
4062 GaimConnection *gc = sess->aux_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4063 #if 0
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4064 OscarData *od = gc->proto_data;
6240
0390b27fe09d [gaim-migrate @ 6734]
Christian Hammond <chipx86@chipx86.com>
parents: 6173
diff changeset
4065 GaimXfer *xfer;
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
4066 #endif
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4067 va_list ap;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4068 fu16_t reason;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4069 char *data, *buf;
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
4070
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4071 va_start(ap, fr);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4072 reason = (fu16_t)va_arg(ap, unsigned int);
3752
a0468bc9b944 [gaim-migrate @ 3890]
William T. Mahan <wtm2@duke.edu>
parents: 3730
diff changeset
4073 data = va_arg(ap, char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4074 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4075
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4076 gaim_debug_error("oscar",
10130
7256fb884aaf [gaim-migrate @ 11193]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
4077 "Message error with data %s and reason %hu\n",
7256fb884aaf [gaim-migrate @ 11193]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
4078 (data != NULL ? data : ""), reason);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4079
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4080 /* BBB */
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
4081 #if 0
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4082 /* If this was a file transfer request, data is a cookie */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4083 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
4084 gaim_xfer_cancel_remote(xfer);
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4085 return 1;
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4086 }
4508
3b98688619fc [gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents: 4491
diff changeset
4087 #endif
3630
caa952062dc2 [gaim-migrate @ 3753]
Rob Flynn <gaim@robflynn.com>
parents: 3600
diff changeset
4088
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4089 /* Data is assumed to be the destination sn */
9826
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4090 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
4091 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
4092 g_free(buf);
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4093 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
4094 gaim_notify_error(sess->aux_data, NULL, buf,
9826
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4095 (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason."));
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4096 }
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4097 g_free(buf);
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4098
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4099 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4100 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4101
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4102 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
4103 GaimConnection *gc = sess->aux_data;
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4104 va_list ap;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4105 fu16_t type1, type2;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4106 char *sn;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4107
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4108 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4109 type1 = (fu16_t) va_arg(ap, unsigned int);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4110 sn = va_arg(ap, char *);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4111 type2 = (fu16_t) va_arg(ap, unsigned int);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4112 va_end(ap);
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4113
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4114 switch (type2) {
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4115 case 0x0000: { /* Text has been cleared */
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4116 serv_got_typing_stopped(gc, sn);
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 case 0x0001: { /* Paused typing */
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
4120 serv_got_typing(gc, sn, 0, GAIM_TYPED);
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 case 0x0002: { /* Typing */
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
4124 serv_got_typing(gc, sn, 0, GAIM_TYPING);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4125 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4126
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4127 default: {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4128 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
4129 } break;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4130 }
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4131
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4132 return 1;
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4133 }
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4134
7141
431a007467e8 [gaim-migrate @ 7708]
Mark Doliner <markdoliner@pidgin.im>
parents: 7129
diff changeset
4135 /*
431a007467e8 [gaim-migrate @ 7708]
Mark Doliner <markdoliner@pidgin.im>
parents: 7129
diff changeset
4136 * 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
4137 * happens when you request info of someone who is offline.
7141
431a007467e8 [gaim-migrate @ 7708]
Mark Doliner <markdoliner@pidgin.im>
parents: 7129
diff changeset
4138 */
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4139 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
4140 gchar *buf;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4141 va_list ap;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
4142 fu16_t reason;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4143 char *destn;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4144
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4145 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4146 reason = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4147 destn = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4148 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4149
7781
db624418e528 [gaim-migrate @ 8426]
Mark Doliner <markdoliner@pidgin.im>
parents: 7693
diff changeset
4150 if (destn == NULL)
7793
9d6043375b81 [gaim-migrate @ 8439]
Mark Doliner <markdoliner@pidgin.im>
parents: 7781
diff changeset
4151 return 1;
9627
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
4152
9826
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4153 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
4154 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
4155 g_free(buf);
9627
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
4156 buf = g_strdup_printf(_("User information for %s unavailable:"), destn);
9826
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4157 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
4158 }
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
4159 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4160
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4161 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4162 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4163
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4164 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
4165 GaimConnection *gc = sess->aux_data;
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4166 GaimAccount *account = gaim_connection_get_account(gc);
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4167 GString *str;
9244
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
4168 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
4169 va_list ap;
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4170 aim_userinfo_t *userinfo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4171
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4172 va_start(ap, fr);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4173 userinfo = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4174 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4175
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4176 str = g_string_new("");
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4177 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
4178 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
4179
10116
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10111
diff changeset
4180 if (userinfo->present & AIM_USERINFO_PRESENT_ONLINESINCE) {
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10111
diff changeset
4181 time_t t = userinfo->onlinesince;
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10111
diff changeset
4182 oscar_string_append(str, "\n<br>", _("Online Since"), ctime(&t));
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10111
diff changeset
4183 }
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10111
diff changeset
4184
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10111
diff changeset
4185 if (userinfo->present & AIM_USERINFO_PRESENT_MEMBERSINCE) {
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10111
diff changeset
4186 time_t t = userinfo->membersince;
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10111
diff changeset
4187 oscar_string_append(str, "\n<br>", _("Member Since"), ctime(&t));
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10111
diff changeset
4188 }
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4189
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4190 if (userinfo->present & AIM_USERINFO_PRESENT_IDLE) {
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4191 tmp = gaim_str_seconds_to_string(userinfo->idletime*60);
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
4192 oscar_string_append(str, "\n<br>", _("Idle"), tmp);
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4193 g_free(tmp);
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4194 }
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4195
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
4196 oscar_string_append_info(gc, str, "\n<br>", NULL, userinfo);
7011
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->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
4199 tmp = oscar_encoding_extract(userinfo->away_encoding);
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4200 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
4201 g_free(tmp);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4202 if (away_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", away_utf8);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4204 g_free(away_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
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4208 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
4209 tmp = oscar_encoding_extract(userinfo->info_encoding);
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4210 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
4211 g_free(tmp);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4212 if (info_utf8 != NULL) {
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4213 g_string_append_printf(str, "\n<hr>%s", info_utf8);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4214 g_free(info_utf8);
2791
26bdc3e83257 [gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2789
diff changeset
4215 }
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4216 }
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4217
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
4218 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
4219 g_string_free(str, TRUE);
9244
de04fe53f756 [gaim-migrate @ 10043]
Tom Samstag <pidgin@modtwo.com>
parents: 9126
diff changeset
4220 title = g_strdup_printf(_("Info for %s"), userinfo->sn);
9797
b69f82378b7b [gaim-migrate @ 10665]
Evan Schoenberg <evands@pidgin.im>
parents: 9771
diff changeset
4221 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
4222 g_free(title);
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
4223 g_free(tmp);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
4224
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4225 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4226 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4227
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4228 static gboolean gaim_reqinfo_timeout_cb(void *data)
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 aim_session_t *sess = data;
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4231 GaimConnection *gc = sess->aux_data;
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4232 OscarData *od = (OscarData *)gc->proto_data;
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4233
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4234 aim_locate_dorequest(data);
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4235 od->getinfotimer = 0;
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4236
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4237 return FALSE;
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4238 }
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 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
4241 {
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4242 GaimConnection *gc = sess->aux_data;
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4243 OscarData *od = (OscarData *)gc->proto_data;
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 * 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
4247 * 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
4248 * too quickly.
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4249 */
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4250 if (od->getinfotimer == 0)
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4251 od->getinfotimer = gaim_timeout_add(1200, gaim_reqinfo_timeout_cb, sess);
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4252
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4253 return 1;
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4254 }
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4255
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
4256 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
4257 {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4258 char *msg;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4259 fu16_t id;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4260 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4261
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4262 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4263 id = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4264 msg = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4265 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4266
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4267 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4268 "MOTD: %s (%hu)\n", msg ? msg : "Unknown", id);
2092
f56061012e3c [gaim-migrate @ 2102]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2090
diff changeset
4269 if (id < 4)
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4270 gaim_notify_warning(sess->aux_data, NULL,
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4271 _("Your AIM connection may be lost."), NULL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4272
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4273 return 1;
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
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4276 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
4277 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4278 fu16_t type;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4279 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4280 OscarData *od = (OscarData *)gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4281
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4282 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4283 type = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4284
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4285 switch(type) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4286 case 0x0002: {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4287 fu8_t maxrooms;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4288 struct aim_chat_exchangeinfo *exchanges;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4289 int exchangecount, i;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4290
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4291 maxrooms = (fu8_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4292 exchangecount = va_arg(ap, int);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4293 exchanges = va_arg(ap, struct aim_chat_exchangeinfo *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4294
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4295 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4296 "chat info: Chat Rights:\n");
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4297 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4298 "chat info: \tMax Concurrent Rooms: %hhd\n", maxrooms);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4299 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4300 "chat info: \tExchange List: (%d total)\n", exchangecount);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4301 for (i = 0; i < exchangecount; i++)
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4302 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4303 "chat info: \t\t%hu %s\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4304 exchanges[i].number, exchanges[i].name ? exchanges[i].name : "");
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4305 while (od->create_rooms) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4306 struct create_room *cr = od->create_rooms->data;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4307 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4308 "creating room %s\n", cr->name);
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
4309 aim_chatnav_createroom(sess, fr->conn, cr->name, cr->exchange);
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
4310 g_free(cr->name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4311 od->create_rooms = g_slist_remove(od->create_rooms, cr);
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
4312 g_free(cr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4313 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4314 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4315 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4316 case 0x0008: {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4317 char *fqcn, *name, *ck;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4318 fu16_t instance, flags, maxmsglen, maxoccupancy, unknown, exchange;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4319 fu8_t createperms;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4320 fu32_t createtime;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4321
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4322 fqcn = va_arg(ap, char *);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4323 instance = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4324 exchange = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4325 flags = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4326 createtime = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4327 maxmsglen = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4328 maxoccupancy = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4329 createperms = (fu8_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4330 unknown = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4331 name = va_arg(ap, char *);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4332 ck = va_arg(ap, char *);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4333
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4334 gaim_debug_misc("oscar",
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
4335 "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
4336 fqcn,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4337 exchange, instance, flags,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4338 createtime,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4339 maxmsglen, maxoccupancy, createperms, unknown,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4340 name, ck);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4341 aim_chat_join(od->sess, od->conn, exchange, ck, instance);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4342 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4343 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4344 default:
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4345 gaim_debug_warning("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4346 "chatnav info: unknown type (%04hx)\n", type);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4347 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4348 }
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4349
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4350 va_end(ap);
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4351
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4352 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4353 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4354
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
4355 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
4356 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4357 int count, i;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
4358 aim_userinfo_t *info;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4359 GaimConnection *g = sess->aux_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4360
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4361 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4362
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4363 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4364 count = va_arg(ap, int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
4365 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4366 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4367
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4368 c = find_oscar_chat_by_conn(g, fr->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4369 if (!c)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4370 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4371
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4372 for (i = 0; i < count; i++)
9846
61f7349c153a [gaim-migrate @ 10724]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9831
diff changeset
4373 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
4374
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4375 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4376 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4377
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
4378 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
4379 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4380 int count, i;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
4381 aim_userinfo_t *info;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4382 GaimConnection *g = sess->aux_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4383
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4384 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4385
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4386 va_start(ap, fr);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4387 count = va_arg(ap, int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
4388 info = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4389 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4390
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4391 c = find_oscar_chat_by_conn(g, fr->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4392 if (!c)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4393 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4394
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4395 for (i = 0; i < count; i++)
8733
f6d36eff3b49 [gaim-migrate @ 9488]
Mark Doliner <markdoliner@pidgin.im>
parents: 8713
diff changeset
4396 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
4397
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4398 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4399 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4400
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
4401 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
4402 va_list ap;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
4403 aim_userinfo_t *userinfo;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4404 struct aim_chat_roominfo *roominfo;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4405 char *roomname;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4406 int usercount;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4407 char *roomdesc;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4408 fu16_t unknown_c9, unknown_d2, unknown_d5, maxmsglen, maxvisiblemsglen;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4409 fu32_t creationtime;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4410 GaimConnection *gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4411 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
4412
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4413 va_start(ap, fr);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4414 roominfo = va_arg(ap, struct aim_chat_roominfo *);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4415 roomname = va_arg(ap, char *);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4416 usercount= va_arg(ap, int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
4417 userinfo = va_arg(ap, aim_userinfo_t *);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4418 roomdesc = va_arg(ap, char *);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4419 unknown_c9 = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4420 creationtime = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4421 maxmsglen = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4422 unknown_d2 = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4423 unknown_d5 = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4424 maxvisiblemsglen = (fu16_t)va_arg(ap, unsigned int);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4425 va_end(ap);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4426
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4427 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4428 "inside chat_info_update (maxmsglen = %hu, maxvislen = %hu)\n",
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4429 maxmsglen, maxvisiblemsglen);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4430
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4431 ccon->maxlen = maxmsglen;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4432 ccon->maxvis = maxvisiblemsglen;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4433
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4434 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4435 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4436
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
4437 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
4438 GaimConnection *gc = sess->aux_data;
8225
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
4439 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
4440 gchar *utf8;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4441 va_list ap;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
4442 aim_userinfo_t *info;
8225
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
4443 int len;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4444 char *msg;
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
4445 char *charset;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4446
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4447 va_start(ap, fr);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
4448 info = va_arg(ap, aim_userinfo_t *);
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
4449 len = va_arg(ap, int);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4450 msg = va_arg(ap, char *);
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
4451 charset = va_arg(ap, char *);
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4452 va_end(ap);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4453
8225
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
4454 utf8 = oscar_encoding_to_utf8(charset, msg, len);
8667
534bd4c4fb38 [gaim-migrate @ 9419]
Mark Doliner <markdoliner@pidgin.im>
parents: 8666
diff changeset
4455 if (utf8 == NULL)
534bd4c4fb38 [gaim-migrate @ 9419]
Mark Doliner <markdoliner@pidgin.im>
parents: 8666
diff changeset
4456 /* The conversion failed! */
8668
c72a49a7c46a [gaim-migrate @ 9420]
Mark Doliner <markdoliner@pidgin.im>
parents: 8667
diff changeset
4457 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
4458 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
4459 g_free(utf8);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4460
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4461 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4462 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4463
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4464 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
4465 va_list ap;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4466 GaimConnection *gc = sess->aux_data;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4467 struct aim_emailinfo *emailinfo;
3725
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
4468 int havenewmail;
7297
5cdfc7212651 [gaim-migrate @ 7881]
Sean Egan <seanegan@pidgin.im>
parents: 7285
diff changeset
4469 char *alertitle, *alerturl;
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4470
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4471 va_start(ap, fr);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4472 emailinfo = va_arg(ap, struct aim_emailinfo *);
3725
40fe9bcc8c9e [gaim-migrate @ 3861]
Duffman
parents: 3722
diff changeset
4473 havenewmail = va_arg(ap, int);
7301
f6a3a23fa2fc [gaim-migrate @ 7885]
Mark Doliner <markdoliner@pidgin.im>
parents: 7297
diff changeset
4474 alertitle = va_arg(ap, char *);
f6a3a23fa2fc [gaim-migrate @ 7885]
Mark Doliner <markdoliner@pidgin.im>
parents: 7297
diff changeset
4475 alerturl = va_arg(ap, char *);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4476 va_end(ap);
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4477
9661
a9895242a351 [gaim-migrate @ 10509]
Daniel Atallah <datallah@pidgin.im>
parents: 9659
diff changeset
4478 if ((emailinfo != NULL) && gaim_account_get_check_mail(gc->account)) {
a9895242a351 [gaim-migrate @ 10509]
Daniel Atallah <datallah@pidgin.im>
parents: 9659
diff changeset
4479 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
4480 emailinfo->domain ? "@" : "",
a9895242a351 [gaim-migrate @ 10509]
Daniel Atallah <datallah@pidgin.im>
parents: 9659
diff changeset
4481 emailinfo->domain ? emailinfo->domain : "");
5542
0f02c413c862 [gaim-migrate @ 5942]
Mark Doliner <markdoliner@pidgin.im>
parents: 5540
diff changeset
4482 if (emailinfo->unread && havenewmail)
0f02c413c862 [gaim-migrate @ 5942]
Mark Doliner <markdoliner@pidgin.im>
parents: 5540
diff changeset
4483 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
4484 g_free(to);
3694
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4485 }
10157
650fd69090cd [gaim-migrate @ 11237]
Mark Doliner <markdoliner@pidgin.im>
parents: 10152
diff changeset
4486
7301
f6a3a23fa2fc [gaim-migrate @ 7885]
Mark Doliner <markdoliner@pidgin.im>
parents: 7297
diff changeset
4487 if (alertitle)
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4488 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
4489
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4490 return 1;
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4491 }
49a336931cc6 [gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents: 3666
diff changeset
4492
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4493 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
4494 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4495 OscarData *od = gc->proto_data;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4496 char *sn;
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 sn = od->requesticon->data;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4499 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4500 "removing %s from hash table\n", sn);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4501 od->requesticon = g_slist_remove(od->requesticon, sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4502 free(sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4503
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4504 if (od->icontimer)
8287
266eacc707ac [gaim-migrate @ 9011]
Scott Lamb
parents: 8273
diff changeset
4505 gaim_timeout_remove(od->icontimer);
8273
7882af5843e9 [gaim-migrate @ 8997]
Scott Lamb
parents: 8266
diff changeset
4506 od->icontimer = gaim_timeout_add(500, gaim_icon_timerfunc, gc);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4507
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4508 return 1;
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
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4511 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
4512 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4513 OscarData *od = gc->proto_data;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4514 GSList *cur;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4515 va_list ap;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4516 char *sn;
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
4517 fu8_t *iconcsum, *icon;
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
4518 fu16_t iconcsumlen, iconlen;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4519
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4520 va_start(ap, fr);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4521 sn = va_arg(ap, char *);
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
4522 iconcsum = va_arg(ap, fu8_t *);
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
4523 iconcsumlen = va_arg(ap, int);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4524 icon = va_arg(ap, fu8_t *);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4525 iconlen = va_arg(ap, int);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4526 va_end(ap);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4527
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
4528 if (iconlen > 0) {
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
4529 char *b16;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
4530 GaimBuddy *b = gaim_find_buddy(gc->account, sn);
6846
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
4531 gaim_buddy_icons_set_for_user(gaim_connection_get_account(gc),
f814f02dca87 [gaim-migrate @ 7391]
Christian Hammond <chipx86@chipx86.com>
parents: 6787
diff changeset
4532 sn, icon, iconlen);
7106
eaeff5775818 [gaim-migrate @ 7671]
Christian Hammond <chipx86@chipx86.com>
parents: 7098
diff changeset
4533 b16 = gaim_base16_encode(iconcsum, iconcsumlen);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4534 if (b16) {
7693
1f736efbd12d [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
4535 gaim_blist_node_set_string((GaimBlistNode*)b, "icon_checksum", b16);
7162
dfd30c70acde [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
4536 g_free(b16);
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
4537 }
4853
5b5ed316fe65 [gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents: 4848
diff changeset
4538 }
4804
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 cur = od->requesticon;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4541 while (cur) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4542 char *cursn = cur->data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4543 if (!aim_sncmp(cursn, sn)) {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4544 od->requesticon = g_slist_remove(od->requesticon, cursn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4545 free(cursn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4546 cur = od->requesticon;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4547 } else
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4548 cur = cur->next;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4549 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4550
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4551 if (od->icontimer)
8287
266eacc707ac [gaim-migrate @ 9011]
Scott Lamb
parents: 8273
diff changeset
4552 gaim_timeout_remove(od->icontimer);
8273
7882af5843e9 [gaim-migrate @ 8997]
Scott Lamb
parents: 8266
diff changeset
4553 od->icontimer = gaim_timeout_add(250, gaim_icon_timerfunc, gc);
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4554
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4555 return 1;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4556 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4557
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4558 static gboolean gaim_icon_timerfunc(gpointer data) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4559 GaimConnection *gc = data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4560 OscarData *od = gc->proto_data;
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4561 aim_userinfo_t *userinfo;
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4562 aim_conn_t *conn;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4563
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4564 conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_ICON);
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
4565 if (!conn) {
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
4566 if (!od->iconconnecting) {
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
4567 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_ICON);
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
4568 od->iconconnecting = TRUE;
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
4569 }
4804
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4570 return FALSE;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4571 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4572
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4573 if (od->set_icon) {
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4574 struct stat st;
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4575 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
4576 if (iconfile == NULL) {
8363
d46380322c37 [gaim-migrate @ 9088]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8361
diff changeset
4577 aim_ssi_delicon(od->sess);
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4578 } else if (!stat(iconfile, &st)) {
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4579 char *buf = g_malloc(st.st_size);
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4580 FILE *file = fopen(iconfile, "rb");
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4581 if (file) {
9532
32470c5a1d58 [gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 9481
diff changeset
4582 /* XXX - Use g_file_get_contents()? */
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4583 fread(buf, 1, st.st_size, file);
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4584 fclose(file);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4585 gaim_debug_info("oscar",
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4586 "Uploading icon to icon server\n");
6879
cc7abcef355c [gaim-migrate @ 7425]
Mark Doliner <markdoliner@pidgin.im>
parents: 6873
diff changeset
4587 aim_bart_upload(od->sess, buf, st.st_size);
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4588 } else
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4589 gaim_debug_error("oscar",
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4590 "Can't open buddy icon file!\n");
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4591 g_free(buf);
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4592 } else {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4593 gaim_debug_error("oscar",
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
4594 "Can't stat buddy icon file!\n");
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4595 }
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4596 od->set_icon = FALSE;
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4597 }
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4598
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4599 if (!od->requesticon) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4600 gaim_debug_misc("oscar",
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4601 "no more icons to request\n");
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4602 return FALSE;
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4603 }
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
4604
7045
458b55091f8b [gaim-migrate @ 7608]
Mark Doliner <markdoliner@pidgin.im>
parents: 7038
diff changeset
4605 userinfo = aim_locate_finduserinfo(od->sess, (char *)od->requesticon->data);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4606 if ((userinfo != NULL) && (userinfo->iconcsumlen > 0)) {
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4607 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
4608 return FALSE;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4609 } else {
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4610 char *sn = od->requesticon->data;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4611 od->requesticon = g_slist_remove(od->requesticon, sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4612 free(sn);
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4613 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4614
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4615 return TRUE;
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4616 }
e6e0e6d50d39 [gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents: 4800
diff changeset
4617
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4618 /*
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4619 * 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
4620 */
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4621 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
4622 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4623 fu16_t type;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4624 char *sn;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4625
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4626 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4627 type = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4628 sn = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4629 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4630
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4631 gaim_debug_info("oscar", "Sent message to %s.\n", sn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4632
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4633 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4634 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4635
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4636 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
4637 static const char *codes[5] = {
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4638 "invalid",
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4639 "change",
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4640 "warning",
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4641 "limit",
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4642 "limit cleared",
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4643 };
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4644 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4645 fu16_t code, rateclass;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4646 fu32_t windowsize, clear, alert, limit, disconnect, currentavg, maxavg;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4647
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4648 va_start(ap, fr);
4200
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4649 code = (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4650 rateclass= (fu16_t)va_arg(ap, unsigned int);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4651 windowsize = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4652 clear = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4653 alert = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4654 limit = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4655 disconnect = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4656 currentavg = va_arg(ap, fu32_t);
8facd81a88ac [gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents: 4199
diff changeset
4657 maxavg = va_arg(ap, fu32_t);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4658 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4659
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4660 gaim_debug_misc("oscar",
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
4661 "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
4662 "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
4663 (code < 5) ? codes[code] : codes[0],
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4664 rateclass,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4665 currentavg, maxavg,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4666 alert, clear,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4667 limit, disconnect,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4668 windowsize);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4669
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4670 /* XXX fix these values */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4671 if (code == AIM_RATE_CODE_CHANGE) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4672 if (currentavg >= clear)
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 } else if (code == AIM_RATE_CODE_WARNING) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4675 aim_conn_setlatency(fr->conn, windowsize/4);
2909
2935ea93dfe7 [gaim-migrate @ 2922]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2906
diff changeset
4676 } else if (code == AIM_RATE_CODE_LIMIT) {
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
4677 gaim_notify_error(sess->aux_data, NULL, _("Rate limiting error."),
6040
ab00305db747 [gaim-migrate @ 6490]
Mark Doliner <markdoliner@pidgin.im>
parents: 6039
diff changeset
4678 _("The last action you attempted could not be "
ab00305db747 [gaim-migrate @ 6490]
Mark Doliner <markdoliner@pidgin.im>
parents: 6039
diff changeset
4679 "performed because you are over the rate limit. "
ab00305db747 [gaim-migrate @ 6490]
Mark Doliner <markdoliner@pidgin.im>
parents: 6039
diff changeset
4680 "Please wait 10 seconds and try again."));
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4681 aim_conn_setlatency(fr->conn, windowsize/2);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4682 } else if (code == AIM_RATE_CODE_CLEARLIMIT) {
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4683 aim_conn_setlatency(fr->conn, 0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4684 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4685
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4686 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4687 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4688
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4689 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
4690 GaimConnection *gc = sess->aux_data;
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4691 GaimAccount *account = gaim_connection_get_account(gc);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4692 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4693 fu16_t newevil;
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
4694 aim_userinfo_t *userinfo;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4695
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4696 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4697 newevil = (fu16_t) va_arg(ap, unsigned int);
2421
009ae3cf0e83 [gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2411
diff changeset
4698 userinfo = va_arg(ap, aim_userinfo_t *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4699 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4700
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4701 /* XXX - What's with the + 0.5? */
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4702 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
4703
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4704 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4705 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4706
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4707 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
4708 GaimConnection *gc = sess->aux_data;
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4709 GaimAccount *account = gaim_connection_get_account(gc);
10152
96aa54c82206 [gaim-migrate @ 11229]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10130
diff changeset
4710 GaimPresence *presence = gaim_account_get_presence(account);
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4711 int warning_level;
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4712 va_list ap;
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4713 aim_userinfo_t *info;
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4714
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4715 va_start(ap, fr);
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4716 info = va_arg(ap, aim_userinfo_t *);
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4717 va_end(ap);
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4718
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4719 warning_level = info->warnlevel/10.0 + 0.5;
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
4720
10152
96aa54c82206 [gaim-migrate @ 11229]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10130
diff changeset
4721 gaim_presence_set_warning_level(presence, warning_level);
2507
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4722
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4723 return 1;
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4724 }
4f2c8913240e [gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2501
diff changeset
4725
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4726 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
4727 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4728 OscarData *od = gc->proto_data;
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4729 va_list ap;
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4730 fu16_t code;
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4731 char *msg;
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4732
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4733 va_start(ap, fr);
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4734 code = (fu16_t)va_arg(ap, int);
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4735 msg = va_arg(ap, char *);
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4736 va_end(ap);
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4737
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4738 gaim_debug_info("oscar",
10130
7256fb884aaf [gaim-migrate @ 11193]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
4739 "Disconnected. Code is 0x%04x and msg is %s\n", code,
7256fb884aaf [gaim-migrate @ 11193]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
4740 (msg != NULL ? msg : ""));
7256fb884aaf [gaim-migrate @ 11193]
Evan Schoenberg <evands@pidgin.im>
parents: 10116
diff changeset
4741
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4742 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
4743 if (code == 0x0001) {
6113
5bc7394e69ea [gaim-migrate @ 6575]
Mark Doliner <markdoliner@pidgin.im>
parents: 6066
diff changeset
4744 gc->wants_to_die = TRUE;
5579
9a3dbd24e80a [gaim-migrate @ 5983]
Sean Egan <seanegan@pidgin.im>
parents: 5577
diff changeset
4745 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
4746 } else {
5579
9a3dbd24e80a [gaim-migrate @ 5983]
Sean Egan <seanegan@pidgin.im>
parents: 5577
diff changeset
4747 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
4748 }
4666
fd74a2faaf94 [gaim-migrate @ 4977]
Mark Doliner <markdoliner@pidgin.im>
parents: 4665
diff changeset
4749 od->killme = TRUE;
4649
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4750 }
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4751
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4752 return 1;
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4753 }
ef77210d482f [gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents: 4646
diff changeset
4754
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
4755 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
4756 GaimConnection *gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4757
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
4758 aim_reqpersonalinfo(sess, fr->conn);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4759
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4760 #ifndef NOSSI
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4761 gaim_debug_info("oscar", "ssi: requesting rights and list\n");
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
4762 aim_ssi_reqrights(sess);
6350
22dfc953f2fb [gaim-migrate @ 6849]
Ethan Blanton <elb@pidgin.im>
parents: 6318
diff changeset
4763 aim_ssi_reqdata(sess);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4764 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4765
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
4766 aim_locate_reqrights(sess);
7285
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
4767 aim_buddylist_reqrights(sess, fr->conn);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4768 aim_im_reqparams(sess);
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
4769 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
4770
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4771 #ifdef NOSSI
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4772 gaim_debug_info("oscar", "bos: requesting rights\n");
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
4773 aim_bos_reqrights(sess, fr->conn);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4774 aim_bos_setgroupperm(sess, fr->conn, AIM_FLAG_ALLUSERS);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
4775 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
4776 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4777
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4778 gaim_connection_update_progress(gc, _("Finalizing connection"), 5, OSCAR_CONNECT_STEPS);
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4779
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4780 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4781 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4782
2675
3f7a2935813b [gaim-migrate @ 2688]
Adam Fritzler <mid@auk.cx>
parents: 2674
diff changeset
4783 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
4784 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4785 OscarData *od = gc->proto_data;
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4786
6905
dd40a6134713 [gaim-migrate @ 7452]
Mark Doliner <markdoliner@pidgin.im>
parents: 6879
diff changeset
4787 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
4788 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
4789 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
4790
2672
5c9b7617a1f3 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
4791 aim_clientready(sess, fr->conn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4792 gaim_debug_info("oscar", "connected to admin\n");
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4793
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4794 if (od->chpass) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4795 gaim_debug_info("oscar", "changing password\n");
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
4796 aim_admin_changepasswd(sess, fr->conn, od->newp, od->oldp);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4797 g_free(od->oldp);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4798 od->oldp = NULL;
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4799 g_free(od->newp);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4800 od->newp = NULL;
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4801 od->chpass = FALSE;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4802 }
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4803 if (od->setnick) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4804 gaim_debug_info("oscar", "formatting screen name\n");
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4805 aim_admin_setnick(sess, fr->conn, od->newsn);
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4806 g_free(od->newsn);
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4807 od->newsn = NULL;
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4808 od->setnick = FALSE;
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
4809 }
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4810 if (od->conf) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4811 gaim_debug_info("oscar", "confirming account\n");
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
4812 aim_admin_reqconfirm(sess, fr->conn);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4813 od->conf = FALSE;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4814 }
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4815 if (od->reqemail) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4816 gaim_debug_info("oscar", "requesting email\n");
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
4817 aim_admin_getinfo(sess, fr->conn, 0x0011);
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4818 od->reqemail = FALSE;
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4819 }
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4820 if (od->setemail) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4821 gaim_debug_info("oscar", "setting email\n");
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4822 aim_admin_setemail(sess, fr->conn, od->email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4823 g_free(od->email);
5497
da3c08f3af25 [gaim-migrate @ 5893]
Mark Doliner <markdoliner@pidgin.im>
parents: 5493
diff changeset
4824 od->email = NULL;
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4825 od->setemail = FALSE;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
4826 }
2647
131597dddade [gaim-migrate @ 2660]
Adam Fritzler <mid@auk.cx>
parents: 2603
diff changeset
4827
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4828 return 1;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4829 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4830
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4831 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
4832 struct aim_icbmparameters *params;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4833 va_list ap;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4834
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4835 va_start(ap, fr);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4836 params = va_arg(ap, struct aim_icbmparameters *);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4837 va_end(ap);
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4838
4194
dbe45b0c38fa [gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents: 4173
diff changeset
4839 /* 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
4840 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
4841 "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
4842 params->maxchan, params->flags, params->maxmsglen,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4843 ((float)params->maxsenderwarn)/10.0, ((float)params->maxrecverwarn)/10.0,
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4844 params->minmsginterval);
2427
761801814c88 [gaim-migrate @ 2440]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2421
diff changeset
4845 */
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4846
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4847 /* Maybe senderwarn and recverwarn should be user preferences... */
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
4848 params->flags = 0x0000000b;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4849 params->maxmsglen = 8000;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4850 params->minmsginterval = 0;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4851
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4852 aim_im_setparams(sess, params);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4853
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4854 return 1;
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4855 }
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
4856
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4857 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
4858 {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4859 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4860 OscarData *od = (OscarData *)gc->proto_data;
5306
1707fdf8c530 [gaim-migrate @ 5678]
Mark Doliner <markdoliner@pidgin.im>
parents: 5302
diff changeset
4861 va_list ap;
1707fdf8c530 [gaim-migrate @ 5678]
Mark Doliner <markdoliner@pidgin.im>
parents: 5302
diff changeset
4862 fu16_t maxsiglen;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4863
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4864 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4865 maxsiglen = (fu16_t) va_arg(ap, int);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4866 va_end(ap);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4867
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4868 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4869 "locate rights: max sig len = %d\n", maxsiglen);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4870
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4871 od->rights.maxsiglen = od->rights.maxawaymsglen = (guint)maxsiglen;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4872
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4873 if (od->icq)
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
4874 aim_locate_setcaps(od->sess, caps_icq);
5301
38f02eecad54 [gaim-migrate @ 5673]
Mark Doliner <markdoliner@pidgin.im>
parents: 5300
diff changeset
4875 else
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
4876 aim_locate_setcaps(od->sess, caps_aim);
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
4877 oscar_set_info(gc, gc->account->user_info);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4878
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4879 return 1;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4880 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4881
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4882 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
4883 va_list ap;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4884 fu16_t maxbuddies, maxwatchers;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
4885 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4886 OscarData *od = (OscarData *)gc->proto_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4887
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4888 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4889 maxbuddies = (fu16_t) va_arg(ap, unsigned int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4890 maxwatchers = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4891 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4892
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4893 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4894 "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
4895
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4896 od->rights.maxbuddies = (guint)maxbuddies;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4897 od->rights.maxwatchers = (guint)maxwatchers;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4898
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4899 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4900 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4901
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4902 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
4903 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
4904 OscarData *od = (OscarData *)gc->proto_data;
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
4905 va_list ap;
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
4906 fu16_t maxpermits, maxdenies;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4907
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
4908 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4909 maxpermits = (fu16_t) va_arg(ap, unsigned int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
4910 maxdenies = (fu16_t) va_arg(ap, unsigned int);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4911 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4912
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4913 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4914 "BOS rights: Max permit = %hu / Max deny = %hu\n", maxpermits, maxdenies);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4915
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4916 od->rights.maxpermits = (guint)maxpermits;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4917 od->rights.maxdenies = (guint)maxdenies;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4918
5576
8a3ce839ed22 [gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents: 5575
diff changeset
4919 gaim_connection_set_state(gc, GAIM_CONNECTED);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4920 serv_finish_login(gc);
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4921
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4922 gaim_debug_info("oscar", "buddy list loaded\n");
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
4923
2672
5c9b7617a1f3 [gaim-migrate @ 2685]
Adam Fritzler <mid@auk.cx>
parents: 2647
diff changeset
4924 aim_clientready(sess, fr->conn);
5948
2527d515c3b8 [gaim-migrate @ 6392]
Mark Doliner <markdoliner@pidgin.im>
parents: 5920
diff changeset
4925 aim_srv_setavailmsg(sess, NULL);
7474
757569d68123 [gaim-migrate @ 8087]
Mark Doliner <markdoliner@pidgin.im>
parents: 7465
diff changeset
4926 aim_srv_setidle(sess, 0);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
4927
4664
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
4928 if (od->icq) {
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
4929 aim_icq_reqofflinemsgs(sess);
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
4930 aim_icq_hideip(sess);
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
4931 }
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4932
2703
6111a9790868 [gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2698
diff changeset
4933 aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_CHATNAV);
4102
06290da3f88d [gaim-migrate @ 4317]
Mark Doliner <markdoliner@pidgin.im>
parents: 4076
diff changeset
4934 if (sess->authinfo->email)
06290da3f88d [gaim-migrate @ 4317]
Mark Doliner <markdoliner@pidgin.im>
parents: 4076
diff changeset
4935 aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_EMAIL);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4936
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4937 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4938 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4939
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4940 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
4941 va_list ap;
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4942 struct aim_icq_offlinemsg *msg;
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
4943 struct aim_incomingim_ch4_args args;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
4944 time_t t;
2706
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4945
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4946 va_start(ap, fr);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4947 msg = va_arg(ap, struct aim_icq_offlinemsg *);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4948 va_end(ap);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4949
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
4950 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
4951 "Received offline message. Converting to channel 4 ICBM...\n");
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
4952 args.uin = msg->sender;
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
4953 args.type = msg->type;
4173
e2528bd24e6f [gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents: 4166
diff changeset
4954 args.flags = msg->flags;
4076
563a1af15501 [gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents: 4075
diff changeset
4955 args.msglen = msg->msglen;
4075
1b8062090546 [gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents: 4056
diff changeset
4956 args.msg = msg->msg;
7108
82655fa54acb [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
4957 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
4958 incomingim_chan4(sess, fr->conn, NULL, &args, t);
2706
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 return 1;
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4961 }
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4962
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4963 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
4964 {
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4965 aim_icq_ackofflinemsgs(sess);
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4966 return 1;
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4967 }
ac9384d37d6c [gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2704
diff changeset
4968
7388
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4969 #if 0
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4970 /*
7465
17e1e9e996ad [gaim-migrate @ 8078]
Mark Doliner <markdoliner@pidgin.im>
parents: 7422
diff changeset
4971 * Update, 2003-11-09:
17e1e9e996ad [gaim-migrate @ 8078]
Mark Doliner <markdoliner@pidgin.im>
parents: 7422
diff changeset
4972 * 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
4973 *
7388
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4974 * It may not be my place to do this, but...
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4975 * 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
4976 * 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
4977 * 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
4978 * 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
4979 *
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4980 * 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
4981 * 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
4982 * what the locale wanted.
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4983 *
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4984 * 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
4985 * 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
4986 * year.
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4987 *
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4988 * 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
4989 * (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
4990 *
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4991 * 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
4992 * 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
4993 *
56f574d188b3 [gaim-migrate @ 7984]
Mark Doliner <markdoliner@pidgin.im>
parents: 7388
diff changeset
4994 * See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=3190
56f574d188b3 [gaim-migrate @ 7984]
Mark Doliner <markdoliner@pidgin.im>
parents: 7388
diff changeset
4995 * 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
4996 */
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4997
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4998 /*
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
4999 * 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
5000 * "last 2 digits" warning.
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5001 */
10157
650fd69090cd [gaim-migrate @ 11237]
Mark Doliner <markdoliner@pidgin.im>
parents: 10152
diff changeset
5002 static size_t my_strftime(char *s, size_t max, const char *fmt,
7386
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5003 const struct tm *tm)
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5004 {
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5005 return strftime(s, max, fmt, tm);
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5006 }
7388
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
5007 #endif
7386
9cccb3792018 [gaim-migrate @ 7981]
Luke Schierer <lschiere@pidgin.im>
parents: 7385
diff changeset
5008
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5009 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
5010 {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5011 GaimConnection *gc = sess->aux_data;
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5012 OscarData *od = (OscarData *)gc->proto_data;
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5013 GaimBuddy *buddy;
8853
4f5b8b401c6f [gaim-migrate @ 9620]
Nathan Walp <nwalp@pidgin.im>
parents: 8838
diff changeset
5014 struct buddyinfo *bi = NULL;
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5015 gchar who[16];
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5016 GString *str;
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5017 gchar *primary, *utf8;
9634
166f3ac40f4a [gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents: 9631
diff changeset
5018 const gchar *alias;
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
5019 va_list ap;
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5020 struct aim_icq_info *info;
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
5021
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
5022 va_start(ap, fr);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5023 info = va_arg(ap, struct aim_icq_info *);
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
5024 va_end(ap);
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
5025
4664
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
5026 if (!info->uin)
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
5027 return 0;
1f5d72a07e64 [gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents: 4662
diff changeset
5028
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5029 str = g_string_sized_new(100);
5556
5d64702e975b [gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents: 5542
diff changeset
5030 g_snprintf(who, sizeof(who), "%u", info->uin);
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5031 buddy = gaim_find_buddy(gaim_connection_get_account(gc), who);
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5032 if (buddy != NULL)
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5033 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
5034
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5035 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
5036 oscar_string_append(str, "\n<br>", _("Nick"), info->nick);
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5037 if ((bi != NULL) && (bi->ipaddr != 0)) {
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5038 char *tstr = g_strdup_printf("%hhu.%hhu.%hhu.%hhu",
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5039 (bi->ipaddr & 0xff000000) >> 24,
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5040 (bi->ipaddr & 0x00ff0000) >> 16,
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5041 (bi->ipaddr & 0x0000ff00) >> 8,
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5042 (bi->ipaddr & 0x000000ff));
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5043 oscar_string_append(str, "\n<br>", _("IP Address"), tstr);
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5044 g_free(tstr);
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5045 }
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5046 oscar_string_append(str, "\n<br>", _("First Name"), info->first);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5047 oscar_string_append(str, "\n<br>", _("Last Name"), info->last);
7108
82655fa54acb [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
5048 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
5049 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
5050 g_free(utf8);
4625
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
5051 }
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
5052 if (info->numaddresses && info->email2) {
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
5053 int i;
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
5054 for (i = 0; i < info->numaddresses; i++) {
7108
82655fa54acb [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
5055 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
5056 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
5057 g_free(utf8);
4643
549034ae52ab [gaim-migrate @ 4953]
Nathan Walp <nwalp@pidgin.im>
parents: 4642
diff changeset
5058 }
4625
f5b87130e1c4 [gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents: 4624
diff changeset
5059 }
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5060 }
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5061 oscar_string_append(str, "\n<br>", _("Mobile Phone"), info->mobile);
10022
b5bb3bdd4d1a [gaim-migrate @ 10954]
Mark Doliner <markdoliner@pidgin.im>
parents: 10009
diff changeset
5062 if (info->gender != 0)
b5bb3bdd4d1a [gaim-migrate @ 10954]
Mark Doliner <markdoliner@pidgin.im>
parents: 10009
diff changeset
5063 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
5064 if (info->birthyear || info->birthmonth || info->birthday) {
4627
4895653771a7 [gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents: 4625
diff changeset
5065 char date[30];
4895653771a7 [gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents: 4625
diff changeset
5066 struct tm tm;
4895653771a7 [gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents: 4625
diff changeset
5067 tm.tm_mday = (int)info->birthday;
4895653771a7 [gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents: 4625
diff changeset
5068 tm.tm_mon = (int)info->birthmonth-1;
4895653771a7 [gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents: 4625
diff changeset
5069 tm.tm_year = (int)info->birthyear-1900;
7388
3cdfcc098741 [gaim-migrate @ 7983]
Mark Doliner <markdoliner@pidgin.im>
parents: 7386
diff changeset
5070 strftime(date, sizeof(date), "%x", &tm);
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5071 oscar_string_append(str, "\n<br>", _("Birthday"), date);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5072 }
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5073 if (info->age) {
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5074 char age[5];
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5075 snprintf(age, sizeof(age), "%hhd", info->age);
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5076 oscar_string_append(str, "\n<br>", _("Age"), age);
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
5077 }
7108
82655fa54acb [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
5078 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
5079 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
5080 g_free(utf8);
4819
3a2d064c99d1 [gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents: 4811
diff changeset
5081 }
7108
82655fa54acb [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
5082 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
5083 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
5084 g_free(utf8);
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5085 }
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5086 g_string_append_printf(str, "<hr>\n");
4641
bcc6f5e3018a [gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
5087 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
5088 g_string_append_printf(str, "<b>%s:</b>", _("Home Address"));
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5089 oscar_string_append(str, "\n<br>", _("Address"), info->homeaddr);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5090 oscar_string_append(str, "\n<br>", _("City"), info->homecity);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5091 oscar_string_append(str, "\n<br>", _("State"), info->homestate);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5092 oscar_string_append(str, "\n<br>", _("Zip Code"), info->homezip);
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5093 g_string_append_printf(str, "\n<hr>\n");
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5094 }
4641
bcc6f5e3018a [gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
5095 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
5096 g_string_append_printf(str, "<b>%s:</b>", _("Work Address"));
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5097 oscar_string_append(str, "\n<br>", _("Address"), info->workaddr);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5098 oscar_string_append(str, "\n<br>", _("City"), info->workcity);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5099 oscar_string_append(str, "\n<br>", _("State"), info->workstate);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5100 oscar_string_append(str, "\n<br>", _("Zip Code"), info->workzip);
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5101 g_string_append_printf(str, "\n<hr>\n");
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5102 }
4641
bcc6f5e3018a [gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents: 4634
diff changeset
5103 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
5104 g_string_append_printf(str, "<b>%s:</b>", _("Work Information"));
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5105 oscar_string_append(str, "\n<br>", _("Company"), info->workcompany);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5106 oscar_string_append(str, "\n<br>", _("Division"), info->workdivision);
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
5107 oscar_string_append(str, "\n<br>", _("Position"), info->workposition);
7108
82655fa54acb [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
5108 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
5109 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
5110 g_free(utf8);
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5111 }
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5112 g_string_append_printf(str, "\n<hr>\n");
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5113 }
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5114
9634
166f3ac40f4a [gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents: 9631
diff changeset
5115 if (buddy != NULL)
166f3ac40f4a [gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents: 9631
diff changeset
5116 alias = gaim_buddy_get_alias(buddy);
166f3ac40f4a [gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents: 9631
diff changeset
5117 else
166f3ac40f4a [gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents: 9631
diff changeset
5118 alias = who;
166f3ac40f4a [gaim-migrate @ 10478]
Mark Doliner <markdoliner@pidgin.im>
parents: 9631
diff changeset
5119 primary = g_strdup_printf(_("ICQ Info for %s"), alias);
9810
fedd23e2134d [gaim-migrate @ 10681]
Mark Doliner <markdoliner@pidgin.im>
parents: 9809
diff changeset
5120 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
5121 g_free(primary);
8670
a3d5260f1d8f [gaim-migrate @ 9422]
Mark Doliner <markdoliner@pidgin.im>
parents: 8668
diff changeset
5122 g_string_free(str, TRUE);
4151
29004a3d21a0 [gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents: 4121
diff changeset
5123
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
5124 return 1;
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
5125 }
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
5126
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5127 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
5128 {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5129 GaimConnection *gc = sess->aux_data;
4820
1e869f00810b [gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents: 4819
diff changeset
5130 gchar who[16], *utf8;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
5131 GaimBuddy *b;
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5132 va_list ap;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5133 struct aim_icq_info *info;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5134
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5135 va_start(ap, fr);
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5136 info = va_arg(ap, struct aim_icq_info *);
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5137 va_end(ap);
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5138
7108
82655fa54acb [gaim-migrate @ 7673]
Christian Hammond <chipx86@chipx86.com>
parents: 7107
diff changeset
5139 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
5140 g_snprintf(who, sizeof(who), "%u", info->uin);
4820
1e869f00810b [gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents: 4819
diff changeset
5141 serv_got_alias(gc, who, utf8);
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5142 if ((b = gaim_find_buddy(gc->account, who))) {
7693
1f736efbd12d [gaim-migrate @ 8338]
Nathan Walp <nwalp@pidgin.im>
parents: 7692
diff changeset
5143 gaim_blist_node_set_string((GaimBlistNode*)b, "servernick", utf8);
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5144 }
4820
1e869f00810b [gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents: 4819
diff changeset
5145 g_free(utf8);
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5146 }
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5147
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5148 return 1;
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5149 }
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5150
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5151 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
5152 {
7032
a6587d42db0c [gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents: 7026
diff changeset
5153 GaimConnection *gc = sess->aux_data;
a6587d42db0c [gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents: 7026
diff changeset
5154 gchar *text;
a6587d42db0c [gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents: 7026
diff changeset
5155 va_list ap;
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5156 char *msg, *url;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5157 fu16_t wid, hei, delay;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5158
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5159 va_start(ap, fr);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5160 msg = va_arg(ap, char *);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5161 url = va_arg(ap, char *);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5162 wid = (fu16_t) va_arg(ap, int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5163 hei = (fu16_t) va_arg(ap, int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5164 delay = (fu16_t) va_arg(ap, int);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5165 va_end(ap);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5166
7032
a6587d42db0c [gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents: 7026
diff changeset
5167 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
5168 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
5169 g_free(text);
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5170
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5171 return 1;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5172 }
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
5173
7032
a6587d42db0c [gaim-migrate @ 7595]
Mark Doliner <markdoliner@pidgin.im>
parents: 7026
diff changeset
5174 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
5175 {
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5176 GaimConnection *gc = sess->aux_data;
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5177 gchar *secondary;
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5178 GString *text;
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5179 int i, num;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5180 va_list ap;
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5181 char *email, *SNs;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5182
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5183 va_start(ap, fr);
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5184 email = va_arg(ap, char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5185 num = va_arg(ap, int);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5186 SNs = va_arg(ap, char *);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5187 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5188
8152
f26c9406b4b3 [gaim-migrate @ 8864]
Mark Doliner <markdoliner@pidgin.im>
parents: 8151
diff changeset
5189 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
5190 text = g_string_new("");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5191 for (i = 0; i < num; i++)
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5192 g_string_append_printf(text, "%s<br>", &SNs[i * (MAXSNLEN + 1)]);
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5193 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
5194
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5195 g_free(secondary);
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5196 g_string_free(text, TRUE);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5197
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5198 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5199 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5200
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5201 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
5202 va_list ap;
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5203 char *email;
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
5204 char *buf;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5205
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5206 va_start(ap, fr);
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5207 email = va_arg(ap, char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5208 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5209
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
5210 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
5211 gaim_notify_error(sess->aux_data, NULL, buf, NULL);
5420
f5535376ef7d [gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents: 5411
diff changeset
5212 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5213
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5214 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5215 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5216
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5217 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
5218 GaimConnection *gc = sess->aux_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5219 fu16_t status;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5220 va_list ap;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5221 char msg[256];
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5222
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5223 va_start(ap, fr);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5224 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
5225 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5226
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5227 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5228 "account confirmation returned status 0x%04x (%s)\n", status,
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5229 status ? "unknown" : "email sent");
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5230 if (!status) {
5302
48db3c9dc259 [gaim-migrate @ 5674]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5301
diff changeset
5231 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
5232 gaim_account_get_username(gaim_connection_get_account(gc)));
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5233 gaim_notify_info(gc, NULL, _("Account Confirmation Requested"), msg);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5234 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5235
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5236 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5237 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5238
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5239 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
5240 GaimConnection *gc = sess->aux_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5241 va_list ap;
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5242 fu16_t perms, err;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5243 char *url, *sn, *email;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5244 int change;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5245
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5246 va_start(ap, fr);
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
5247 change = va_arg(ap, int);
4199
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5248 perms = (fu16_t) va_arg(ap, unsigned int);
191e14fcd87a [gaim-migrate @ 4430]
Luke Schierer <lschiere@pidgin.im>
parents: 4194
diff changeset
5249 err = (fu16_t) va_arg(ap, unsigned int);
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5250 url = va_arg(ap, char *);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5251 sn = va_arg(ap, char *);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5252 email = va_arg(ap, char *);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5253 va_end(ap);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5254
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5255 gaim_debug_misc("oscar",
9626
0bf7f913c6ca [gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents: 9625
diff changeset
5256 "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
5257 change ? "change" : "request", perms, err,
0bf7f913c6ca [gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents: 9625
diff changeset
5258 (url != NULL) ? url : "(null)",
0bf7f913c6ca [gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents: 9625
diff changeset
5259 (sn != NULL) ? sn : "(null)",
0bf7f913c6ca [gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents: 9625
diff changeset
5260 (email != NULL) ? email : "(null)");
0bf7f913c6ca [gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents: 9625
diff changeset
5261
0bf7f913c6ca [gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents: 9625
diff changeset
5262 if ((err > 0) && (url != NULL)) {
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5263 char *dialog_msg;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5264 char *dialog_top = g_strdup_printf(_("Error Changing Account Info"));
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5265 switch (err) {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5266 case 0x0001: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5267 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
5268 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5269 case 0x0006: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5270 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
5271 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5272 case 0x000b: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5273 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
5274 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5275 case 0x001d: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5276 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
5277 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5278 case 0x0021: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5279 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
5280 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5281 case 0x0023: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5282 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
5283 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5284 default: {
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5285 dialog_msg = g_strdup_printf(_("Error 0x%04x: Unknown error."), err);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5286 } break;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5287 }
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5288 gaim_notify_error(gc, NULL, dialog_top, dialog_msg);
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5289 g_free(dialog_top);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5290 g_free(dialog_msg);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5291 return 1;
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5292 }
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5293
9626
0bf7f913c6ca [gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents: 9625
diff changeset
5294 if (sn != NULL) {
4585
cd29170cbc26 [gaim-migrate @ 4869]
Matthew Smith <matthew@smigs.co.uk>
parents: 4508
diff changeset
5295 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
5296 gaim_notify_info(gc, NULL, _("Account Info"), dialog_msg);
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5297 g_free(dialog_msg);
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5298 }
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5299
9626
0bf7f913c6ca [gaim-migrate @ 10470]
Mark Doliner <markdoliner@pidgin.im>
parents: 9625
diff changeset
5300 if (email != NULL) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5301 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
5302 gaim_account_get_username(gaim_connection_get_account(gc)), email);
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5303 gaim_notify_info(gc, NULL, _("Account Info"), dialog_msg);
3912
334ebe7e5f93 [gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents: 3867
diff changeset
5304 g_free(dialog_msg);
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
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5307 return 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5308 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5309
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5310 static void oscar_keepalive(GaimConnection *gc) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5311 OscarData *od = (OscarData *)gc->proto_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5312 aim_flap_nop(od->sess, od->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5313 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5314
6059
9934c862ca14 [gaim-migrate @ 6509]
John Silvestri <john.silvestri@gmail.com>
parents: 6053
diff changeset
5315 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
5316 OscarData *od = (OscarData *)gc->proto_data;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
5317 struct oscar_direct_im *dim = oscar_direct_im_find(od, name);
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
5318 if (dim && dim->connected)
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
5319 if (typing == GAIM_TYPING)
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5320 aim_odc_send_typing(od->sess, dim->conn, 0x0002);
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
5321 else if (typing == GAIM_TYPED)
4870
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5322 aim_odc_send_typing(od->sess, dim->conn, 0x0001);
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5323 else
50dac8774e21 [gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents: 4853
diff changeset
5324 aim_odc_send_typing(od->sess, dim->conn, 0x0000);
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
5325 else {
5300
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
5326 /* Don't send if this turkey is in our deny list */
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
5327 GSList *list;
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
5328 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
5329 if (!list) {
7261
4be05820d441 [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
5330 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
5331 if (bi && bi->typingnot) {
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
5332 if (typing == GAIM_TYPING)
5300
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
5333 aim_im_sendmtn(od->sess, 0x0001, name, 0x0002);
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5868
diff changeset
5334 else if (typing == GAIM_TYPED)
5300
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
5335 aim_im_sendmtn(od->sess, 0x0001, name, 0x0001);
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
5336 else
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
5337 aim_im_sendmtn(od->sess, 0x0001, name, 0x0000);
3a728d511680 [gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents: 5238
diff changeset
5338 }
3595
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
5339 }
28da7ae040a5 [gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents: 3579
diff changeset
5340 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5341 return 0;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5342 }
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
5343
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5344 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
5345
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5346 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
5347 OscarData *od = (OscarData *)gc->proto_data;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
5348 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
5349 int ret = 0;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5350 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
5351 char *tmpmsg = NULL, *tmpmsg2 = NULL;
3458
6140a920776b [gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents: 3456
diff changeset
5352
4838
653f06ff2acf [gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents: 4834
diff changeset
5353 if (dim && dim->connected) {
653f06ff2acf [gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents: 4834
diff changeset
5354 /* If we're directly connected, send a direct IM */
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6907
diff changeset
5355 ret = gaim_odc_send_im(od->sess, dim->conn, message, imflags);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5356 } else {
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5357 struct buddyinfo *bi;
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5358 struct aim_sendimext_args args;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5359 struct stat st;
6478
2c3fe7c8659b [gaim-migrate @ 6991]
Robert McQueen <robot101@debian.org>
parents: 6465
diff changeset
5360 gsize len;
8962
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5361 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
5362
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5363 if (strstr(message, "<IMG "))
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5364 gaim_conversation_write(conv, "",
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5365 _("Your IM Image was not sent. "
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5366 "You must be Direct Connected to send IM Images."),
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
5367 GAIM_MESSAGE_ERROR, time(NULL));
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5368
7261
4be05820d441 [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
5369 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
5370 if (!bi) {
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5371 bi = g_new0(struct buddyinfo, 1);
7261
4be05820d441 [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
5372 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
5373 }
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5374
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5375 args.flags = AIM_IMFLAGS_ACK | AIM_IMFLAGS_CUSTOMFEATURES;
4665
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
5376 if (od->icq) {
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
5377 args.features = features_icq;
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
5378 args.featureslen = sizeof(features_icq);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5379 args.flags |= AIM_IMFLAGS_OFFLINE;
4665
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
5380 } else {
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
5381 args.features = features_aim;
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
5382 args.featureslen = sizeof(features_aim);
4972
3dd342b21444 [gaim-migrate @ 5306]
Mark Doliner <markdoliner@pidgin.im>
parents: 4969
diff changeset
5383
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
5384 if (imflags & GAIM_CONV_IM_AUTO_RESP)
4972
3dd342b21444 [gaim-migrate @ 5306]
Mark Doliner <markdoliner@pidgin.im>
parents: 4969
diff changeset
5385 args.flags |= AIM_IMFLAGS_AWAY;
4665
d417f1b1a61b [gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents: 4664
diff changeset
5386 }
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5387
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5388 if (bi->ico_need) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5389 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5390 "Sending buddy icon request with message\n");
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5391 args.flags |= AIM_IMFLAGS_BUDDYREQ;
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5392 bi->ico_need = FALSE;
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5393 }
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5394
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5395 if (iconfile && !stat(iconfile, &st)) {
8361
5418fa8917c4 [gaim-migrate @ 9086]
Mark Doliner <markdoliner@pidgin.im>
parents: 8359
diff changeset
5396 FILE *file = fopen(iconfile, "rb");
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5397 if (file) {
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5398 char *buf = g_malloc(st.st_size);
9532
32470c5a1d58 [gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 9481
diff changeset
5399 /* XXX - Use g_file_get_contents()? */
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5400 fread(buf, 1, st.st_size, file);
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
5401 fclose(file);
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5402
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5403 args.iconlen = st.st_size;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5404 args.iconsum = aimutil_iconsum(buf, st.st_size);
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5405 args.iconstamp = st.st_mtime;
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5406
7406
b0e59cabc315 [gaim-migrate @ 8006]
Sean Egan <seanegan@pidgin.im>
parents: 7389
diff changeset
5407 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
5408 bi->ico_informed = FALSE;
7406
b0e59cabc315 [gaim-migrate @ 8006]
Sean Egan <seanegan@pidgin.im>
parents: 7389
diff changeset
5409 bi->ico_sent = FALSE;
b0e59cabc315 [gaim-migrate @ 8006]
Sean Egan <seanegan@pidgin.im>
parents: 7389
diff changeset
5410 }
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5411
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5412 if (!bi->ico_informed) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5413 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5414 "Claiming to have a buddy icon\n");
4738
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5415 args.flags |= AIM_IMFLAGS_HASICON;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5416 bi->ico_me_len = args.iconlen;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5417 bi->ico_me_csum = args.iconsum;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5418 bi->ico_me_time = args.iconstamp;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5419 bi->ico_informed = TRUE;
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5420 }
934125d7450e [gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents: 4734
diff changeset
5421
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5422 g_free(buf);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5423 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5424 }
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5425
3008
9a68ea192a96 [gaim-migrate @ 3021]
Sean Egan <seanegan@pidgin.im>
parents: 3001
diff changeset
5426 args.destsn = name;
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5427
8985
5045635e6d86 [gaim-migrate @ 9760]
Mark Doliner <markdoliner@pidgin.im>
parents: 8984
diff changeset
5428 /*
5045635e6d86 [gaim-migrate @ 9760]
Mark Doliner <markdoliner@pidgin.im>
parents: 8984
diff changeset
5429 * 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
5430 * strip all HTML
5045635e6d86 [gaim-migrate @ 9760]
Mark Doliner <markdoliner@pidgin.im>
parents: 8984
diff changeset
5431 */
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
5432 if (aim_sn_is_icq(name) ) {
8995
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5433 /* being sent to an ICQ user */
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
5434 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
5435 /* 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
5436 tmpmsg = gaim_str_add_cr(message);
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5437 } else {
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5438 /* from an ICQ user - do nothing */
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5439 tmpmsg = g_strdup(message);
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5440 }
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5441 } else {
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5442 /* being sent to an AIM user */
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
5443 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
5444 /* from an ICQ user */
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5445 tmpmsg2 = gaim_strdup_withhtml(message);
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5446 tmpmsg = gaim_escape_html(tmpmsg2);
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5447 g_free(tmpmsg2);
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5448 } else
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5449 tmpmsg = gaim_strdup_withhtml(message);
f35860fdf94d [gaim-migrate @ 9770]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8993
diff changeset
5450 }
6310
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
5451 len = strlen(tmpmsg);
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
5452
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
5453 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
5454 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
5455 args.charset, args.charsubset, args.msglen);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5456 ret = aim_im_sendch1_ext(od->sess, &args);
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
5457 g_free((char *)args.msg);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5458 }
4838
653f06ff2acf [gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents: 4834
diff changeset
5459
6310
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
5460 g_free(tmpmsg);
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
5461
2303
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
5462 if (ret >= 0)
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
5463 return 1;
6310
efd8a4cbff53 [gaim-migrate @ 6809]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
5464
2303
18171aa8cd37 [gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2297
diff changeset
5465 return ret;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5466 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5467
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
5468 static void oscar_get_info(GaimConnection *gc, const char *name) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5469 OscarData *od = (OscarData *)gc->proto_data;
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
5470
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
5471 if (od->icq && aim_sn_is_icq(name))
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
5472 aim_icq_getallinfo(od->sess, name);
2742
2ffd839888a5 [gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2734
diff changeset
5473 else
7235
7cec09c2efe4 [gaim-migrate @ 7810]
Daniel Westermann-Clark
parents: 7173
diff changeset
5474 aim_locate_getinfoshort(od->sess, name, 0x00000003);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
5475 }
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
5476
8950
1b90ece5fb4f [gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents: 8907
diff changeset
5477 #if 0
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
5478 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
5479 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
5480 /* 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
5481 OscarData *od = (OscarData *)gc->proto_data;
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
5482 aim_locate_setdirinfo(od->sess, first, middle, last,
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5483 maiden, NULL, NULL, city, state, NULL, 0, web);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5484 }
8950
1b90ece5fb4f [gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents: 8907
diff changeset
5485 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5486
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5487 static void oscar_set_idle(GaimConnection *gc, int time) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5488 OscarData *od = (OscarData *)gc->proto_data;
7474
757569d68123 [gaim-migrate @ 8087]
Mark Doliner <markdoliner@pidgin.im>
parents: 7465
diff changeset
5489 aim_srv_setidle(od->sess, time);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5490 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5491
5954
58e43cf2dc1f [gaim-migrate @ 6398]
Mark Doliner <markdoliner@pidgin.im>
parents: 5948
diff changeset
5492 static void oscar_set_info(GaimConnection *gc, const char *text) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5493 OscarData *od = (OscarData *)gc->proto_data;
9807
ff713acc7204 [gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents: 9806
diff changeset
5494 int charset = 0;
6019
5be866245659 [gaim-migrate @ 6469]
Decklin Foster <decklin@red-bean.com>
parents: 5975
diff changeset
5495 char *text_html = NULL;
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
5496 char *msg = NULL;
6478
2c3fe7c8659b [gaim-migrate @ 6991]
Robert McQueen <robot101@debian.org>
parents: 6465
diff changeset
5497 gsize msglen = 0;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5498
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5499 if (od->rights.maxsiglen == 0)
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5500 gaim_notify_warning(gc, NULL, _("Unable to set AIM profile."),
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5501 _("You have probably requested to set your "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5502 "profile before the login procedure completed. "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5503 "Your profile remains unset; try setting it "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5504 "again when you are fully connected."));
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
5505
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5506 if (!text) {
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5507 aim_locate_setprofile(od->sess, NULL, "", 0, NULL, NULL, 0);
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5508 return;
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5509 }
10097
cdf1f787073f [gaim-migrate @ 11119]
Calle Englund <notcalle@users.sourceforge.net>
parents: 10096
diff changeset
5510
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5511 text_html = gaim_strdup_withhtml(text);
9807
ff713acc7204 [gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents: 9806
diff changeset
5512 charset = oscar_charset_check(text_html);
9826
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
5513 if (charset == AIM_CHARSET_UNICODE) {
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5514 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
5515 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
5516 g_free(msg);
9826
8fd989d134e0 [gaim-migrate @ 10697]
Mark Doliner <markdoliner@pidgin.im>
parents: 9810
diff changeset
5517 } else if (charset == AIM_CHARSET_CUSTOM) {
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5518 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
5519 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
5520 g_free(msg);
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5521 } else {
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5522 msglen = strlen(text_html);
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5523 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
5524 }
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5525
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5526 if (msglen > od->rights.maxsiglen) {
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5527 gchar *errstr;
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5528 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
5529 "has been exceeded. Gaim has truncated it for you.",
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5530 "The maximum profile length of %d bytes "
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5531 "has been exceeded. Gaim has truncated it for you.",
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5532 od->rights.maxsiglen), od->rights.maxsiglen);
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5533 gaim_notify_warning(gc, NULL, _("Profile too long."), errstr);
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5534 g_free(errstr);
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5535 }
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5536
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5537 g_free(text_html);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5538
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5539 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5540 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5541
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5542 static void
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5543 oscar_set_status_aim(GaimAccount *account, GaimStatus *status)
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5544 {
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5545 GaimConnection *gc = gaim_account_get_connection(account);
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5546 OscarData *od = (OscarData *)gc->proto_data;
9992
d733f96bfc7b [gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents: 9991
diff changeset
5547 GaimStatusType *status_type;
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5548 GaimStatusPrimitive primitive;
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5549 GaimPresence *presence;
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5550 const gchar *status_id;
9807
ff713acc7204 [gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents: 9806
diff changeset
5551 int charset = 0;
10196
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5552 const gchar *text_html = NULL;
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
5553 char *msg = NULL;
6478
2c3fe7c8659b [gaim-migrate @ 6991]
Robert McQueen <robot101@debian.org>
parents: 6465
diff changeset
5554 gsize msglen = 0;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5555
9992
d733f96bfc7b [gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents: 9991
diff changeset
5556 status_type = gaim_status_get_type(status);
d733f96bfc7b [gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents: 9991
diff changeset
5557 primitive = gaim_status_type_get_primitive(status_type);
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5558 status_id = gaim_status_get_id(status);
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5559 presence = gaim_account_get_presence(account);
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5560
10196
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5561 gaim_debug_info("oscar", "Setting status to %s\n", status_id);
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5562
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5563 if (od->rights.maxawaymsglen == 0)
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5564 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
5565 _("You have probably requested to set your "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5566 "away message before the login procedure "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5567 "completed. You remain in a \"present\" "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5568 "state; try setting it again when you are "
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
5569 "fully connected."));
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
5570
9992
d733f96bfc7b [gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents: 9991
diff changeset
5571 if (primitive == GAIM_STATUS_AVAILABLE) {
10197
28d80bc4a51d [gaim-migrate @ 11314]
Mark Doliner <markdoliner@pidgin.im>
parents: 10196
diff changeset
5572 aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL);
28d80bc4a51d [gaim-migrate @ 11314]
Mark Doliner <markdoliner@pidgin.im>
parents: 10196
diff changeset
5573
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
5574 aim_locate_setprofile(od->sess, NULL, NULL, 0, NULL, "", 0);
9995
df30c5175fd7 [gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents: 9992
diff changeset
5575 #if 0
df30c5175fd7 [gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents: 9992
diff changeset
5576 /* Set an available message */
df30c5175fd7 [gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents: 9992
diff changeset
5577 aim_srv_setavailmsg(od->sess, text);
df30c5175fd7 [gaim-migrate @ 10908]
Mark Doliner <markdoliner@pidgin.im>
parents: 9992
diff changeset
5578 #endif
10196
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5579
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5580 } else if (primitive == GAIM_STATUS_AWAY) {
10197
28d80bc4a51d [gaim-migrate @ 11314]
Mark Doliner <markdoliner@pidgin.im>
parents: 10196
diff changeset
5581 aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL);
28d80bc4a51d [gaim-migrate @ 11314]
Mark Doliner <markdoliner@pidgin.im>
parents: 10196
diff changeset
5582
10196
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5583 text_html = gaim_status_get_attr_string(status, "message");
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5584
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5585 if (text_html == NULL) {
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5586 text_html = _("Away");
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5587 }
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5588
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5589 charset = oscar_charset_check(text_html);
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5590 if (charset == AIM_CHARSET_UNICODE) {
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5591 msg = g_convert(text_html, strlen(text_html), "UCS-2BE", "UTF-8", NULL, &msglen, NULL);
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5592 aim_locate_setprofile(od->sess, NULL, NULL, 0, "unicode-2-0", msg,
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5593 (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen));
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5594 g_free(msg);
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5595 } else if (charset == AIM_CHARSET_CUSTOM) {
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5596 msg = g_convert(text_html, strlen(text_html), "ISO-8859-1", "UTF-8", NULL, &msglen, NULL);
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5597 aim_locate_setprofile(od->sess, NULL, NULL, 0, "iso-8859-1", msg,
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5598 (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen));
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5599 g_free(msg);
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5600 } else {
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5601 msglen = strlen(text_html);
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5602 aim_locate_setprofile(od->sess, NULL, NULL, 0, "us-ascii", text_html,
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5603 (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen));
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5604 }
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5605
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5606 if (msglen > od->rights.maxawaymsglen) {
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5607 gchar *errstr;
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5608
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5609 errstr = g_strdup_printf(ngettext("The maximum away message length of %d byte "
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5610 "has been exceeded. Gaim has truncated it for you.",
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5611 "The maximum away message length of %d bytes "
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5612 "has been exceeded. Gaim has truncated it for you.",
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5613 od->rights.maxawaymsglen), od->rights.maxawaymsglen);
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5614 gaim_notify_warning(gc, NULL, _("Away message too long."), errstr);
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5615 g_free(errstr);
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5616 }
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5617
10197
28d80bc4a51d [gaim-migrate @ 11314]
Mark Doliner <markdoliner@pidgin.im>
parents: 10196
diff changeset
5618 } else if (primitive == GAIM_STATUS_HIDDEN) {
28d80bc4a51d [gaim-migrate @ 11314]
Mark Doliner <markdoliner@pidgin.im>
parents: 10196
diff changeset
5619 aim_setextstatus(od->sess, AIM_ICQ_STATE_INVISIBLE);
28d80bc4a51d [gaim-migrate @ 11314]
Mark Doliner <markdoliner@pidgin.im>
parents: 10196
diff changeset
5620
5129
c1cfbdfcd381 [gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents: 5125
diff changeset
5621 } else {
10196
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5622 gaim_debug_info("oscar", "Don't know what to do for this status\n");
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5623
d87d0b191feb [gaim-migrate @ 11313]
Mark Doliner <markdoliner@pidgin.im>
parents: 10195
diff changeset
5624 }
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5625 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5626
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5627 static void
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5628 oscar_set_status_icq(GaimAccount *account, GaimStatus *status)
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5629 {
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5630 GaimConnection *gc = gaim_account_get_connection(account);
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5631 OscarData *od = (OscarData *)gc->proto_data;
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5632 const gchar *status_id = gaim_status_get_id(status);
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5633
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5634 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
5635 account->perm_deny = 4;
8265
ff840ad070be [gaim-migrate @ 8988]
Mark Doliner <markdoliner@pidgin.im>
parents: 8257
diff changeset
5636 else
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5637 account->perm_deny = 3;
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5638
8265
ff840ad070be [gaim-migrate @ 8988]
Mark Doliner <markdoliner@pidgin.im>
parents: 8257
diff changeset
5639 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
5640 aim_ssi_setpermdeny(od->sess, account->perm_deny, 0xffffffff);
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
5641
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5642 if (!strcmp(status_id, OSCAR_STATUS_ID_ONLINE))
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
5643 aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL);
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5644
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5645 else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY))
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
5646 aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY);
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5647
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5648 else if (!strcmp(status_id, OSCAR_STATUS_ID_DND))
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
5649 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
5650
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5651 else if (!strcmp(status_id, OSCAR_STATUS_ID_NA))
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
5652 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
5653
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5654 else if (!strcmp(status_id, OSCAR_STATUS_ID_OCCUPIED))
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
5655 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
5656
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5657 else if (!strcmp(status_id, OSCAR_STATUS_ID_FREE4CHAT))
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
5658 aim_setextstatus(od->sess, AIM_ICQ_STATE_CHAT);
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5659
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5660 else if (!strcmp(status_id, OSCAR_STATUS_ID_INVISIBLE))
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
5661 aim_setextstatus(od->sess, AIM_ICQ_STATE_INVISIBLE);
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5662
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5663 else if (!strcmp(status_id, OSCAR_STATUS_ID_CUSTOM))
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5664 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
5665
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5666 return;
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5667 }
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5668
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5669 static void
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5670 oscar_set_status(GaimAccount *account, GaimStatus *status)
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5671 {
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5672 GaimConnection *gc = gaim_account_get_connection(account);
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5673 OscarData *od = (OscarData *)gc->proto_data;
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5674
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5675 if (od->icq)
9988
f58c80ea22ee [gaim-migrate @ 10901]
Gary Kramlich <grim@pidgin.im>
parents: 9982
diff changeset
5676 oscar_set_status_icq(account, status);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5677 else
9988
f58c80ea22ee [gaim-migrate @ 10901]
Gary Kramlich <grim@pidgin.im>
parents: 9982
diff changeset
5678 oscar_set_status_aim(account, status);
2993
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5679
0340d0a8b810 [gaim-migrate @ 3006]
Rob Flynn <gaim@robflynn.com>
parents: 2991
diff changeset
5680 return;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5681 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5682
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5683 static void
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
5684 oscar_warn(GaimConnection *gc, const char *name, gboolean anonymous) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5685 OscarData *od = (OscarData *)gc->proto_data;
9753
5951fd24250e [gaim-migrate @ 10620]
Mark Doliner <markdoliner@pidgin.im>
parents: 9730
diff changeset
5686 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
5687 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5688
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5689 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
5690 OscarData *od = (OscarData *)gc->proto_data;
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5691
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5692 if (!aim_snvalid(buddy->name)) {
8092
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 8077
diff changeset
5693 gchar *buf;
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5694 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
5695 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
5696 gaim_notify_error(gc, NULL, _("Unable To Add"), buf);
8092
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 8077
diff changeset
5697 g_free(buf);
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5698
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5699 /* Remove from local list */
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5700 gaim_blist_remove_buddy(buddy);
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5701
8092
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 8077
diff changeset
5702 return;
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 8077
diff changeset
5703 }
ba92ce841814 [gaim-migrate @ 8791]
Mark Doliner <markdoliner@pidgin.im>
parents: 8077
diff changeset
5704
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5705 #ifdef NOSSI
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5706 aim_buddylist_addbuddy(od->sess, od->conn, buddy->name);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5707 #else
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5708 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
5709 if (buddy && group) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5710 gaim_debug_info("oscar",
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5711 "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
5712 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
5713 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5714 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5715 #endif
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5716
10157
650fd69090cd [gaim-migrate @ 11237]
Mark Doliner <markdoliner@pidgin.im>
parents: 10152
diff changeset
5717 /* XXX - Should this be done from AIM accounts, as well? */
4759
5a8c326b49b3 [gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents: 4754
diff changeset
5718 if (od->icq)
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5719 aim_icq_getalias(od->sess, buddy->name);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5720 }
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5721
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5722 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
5723 OscarData *od = (OscarData *)gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5724 #ifdef NOSSI
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5725 char buf[MSG_LEN];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5726 int n=0;
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5727
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5728 while (buddies) {
9381
a075315bedbf [gaim-migrate @ 10189]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9318
diff changeset
5729 GaimBuddy *buddy = buddies->data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5730 if (n > MSG_LEN - 18) {
7285
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
5731 aim_buddylist_set(od->sess, od->conn, buf);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5732 n = 0;
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
5733 }
9381
a075315bedbf [gaim-migrate @ 10189]
Felipe Contreras <felipe.contreras@gmail.com>
parents: 9318
diff changeset
5734 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
5735 buddies = buddies->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5736 }
7285
b9d07d0c9bc2 [gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents: 7283
diff changeset
5737 aim_buddylist_set(od->sess, od->conn, buf);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5738 #else
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5739
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5740 if (od->sess->ssi.received_data) {
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5741 GList *curb = buddies;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5742 GList *curg = groups;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5743 while ((curb != NULL) && (curg != NULL)) {
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5744 GaimBuddy *buddy = curb->data;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5745 GaimGroup *group = curg->data;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5746 oscar_add_buddy(gc, buddy, group);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5747 curb = curb->next;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5748 curg = curg->next;
4230
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 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5751 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5752 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5753
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5754 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
5755 OscarData *od = (OscarData *)gc->proto_data;
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5756
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5757 #ifdef NOSSI
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5758 aim_buddylist_removebuddy(od->sess, od->conn, buddy->name);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5759 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5760 if (od->sess->ssi.received_data) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5761 gaim_debug_info("oscar",
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5762 "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
5763 aim_ssi_delbuddy(od->sess, buddy->name, group->name);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5764 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5765 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5766 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5767
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5768 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
5769 OscarData *od = (OscarData *)gc->proto_data;
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5770
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5771 #ifdef NOSSI
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5772 for (cur = buddies; cur != NULL; cur = cur->next) {
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5773 GaimBuddy *buddy = cur->data;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5774 aim_buddylist_removebuddy(od->sess, od->conn, buddy->name);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5775 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5776 #else
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5777 if (od->sess->ssi.received_data) {
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5778 GList *curb = buddies;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5779 GList *curg = groups;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5780 while ((curb != NULL) && (curg != NULL)) {
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5781 GaimBuddy *buddy = curb->data;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5782 GaimGroup *group = curg->data;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5783 oscar_remove_buddy(gc, buddy, group);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5784 curb = curb->next;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5785 curg = curg->next;
3092
01a9e61c785a [gaim-migrate @ 3106]
Sean Egan <seanegan@pidgin.im>
parents: 3089
diff changeset
5786 }
4230
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 #endif
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5789 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5790
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5791 #ifndef NOSSI
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5792 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
5793 OscarData *od = (OscarData *)gc->proto_data;
4303
121490448a58 [gaim-migrate @ 4557]
Mark Doliner <markdoliner@pidgin.im>
parents: 4299
diff changeset
5794 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
5795 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5796 "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
5797 aim_ssi_movebuddy(od->sess, old_group, new_group, name);
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5798 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5799 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5800
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5801 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
5802 OscarData *od = (OscarData *)gc->proto_data;
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5803 if (od->sess->ssi.received_data) {
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5804 char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, name);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5805 if (gname) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5806 gaim_debug_info("oscar",
9586
cb4e6ae1f4b1 [gaim-migrate @ 10429]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9554
diff changeset
5807 "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
5808 aim_ssi_aliasbuddy(od->sess, gname, name, alias);
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5809 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5810 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5811 }
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
5812
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5813 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
5814 OscarData *od = (OscarData *)gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5815
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5816 if (od->sess->ssi.received_data) {
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5817 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
5818 GList *cur, *groups = NULL;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5819
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5820 /* Make a list of what the groups each buddy is in */
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5821 for (cur = moved_buddies; cur != NULL; cur = cur->next) {
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5822 GaimBlistNode *node = cur->data;
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5823 groups = g_list_append(groups, node->parent);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5824 }
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5825
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5826 oscar_remove_buddies(gc, moved_buddies, groups);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5827 oscar_add_buddies(gc, moved_buddies, groups);
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5828 g_list_free(groups);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5829 gaim_debug_info("oscar",
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5830 "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
5831 } else {
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5832 aim_ssi_rename_group(od->sess, old_name, group->name);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5833 gaim_debug_info("oscar",
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
5834 "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
5835 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
5836 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
5837 }
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
5838
5968
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
5839 static gboolean gaim_ssi_rerequestdata(gpointer data) {
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
5840 aim_session_t *sess = data;
6350
22dfc953f2fb [gaim-migrate @ 6849]
Ethan Blanton <elb@pidgin.im>
parents: 6318
diff changeset
5841 aim_ssi_reqdata(sess);
5968
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
5842 return FALSE;
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
5843 }
f3e4bc7bd718 [gaim-migrate @ 6415]
Mark Doliner <markdoliner@pidgin.im>
parents: 5954
diff changeset
5844
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5845 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
5846 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5847 OscarData *od = gc->proto_data;
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5848 va_list ap;
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5849 fu16_t reason;
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5850
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5851 va_start(ap, fr);
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5852 reason = (fu16_t)va_arg(ap, unsigned int);
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5853 va_end(ap);
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5854
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5855 gaim_debug_error("oscar", "ssi: SNAC error %hu\n", reason);
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5856
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5857 if (reason == 0x0005) {
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
5858 gaim_notify_error(gc, NULL, _("Unable To Retrieve Buddy List"),
5828
3f919804eb88 [gaim-migrate @ 6259]
Nathan Walp <nwalp@pidgin.im>
parents: 5685
diff changeset
5859 _("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
5860 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
5861 }
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5862
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5863 /* Activate SSI */
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5864 /* 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
5865 /* 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
5866 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
5867 aim_ssi_enable(od->sess);
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5868
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5869 return 1;
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5870 }
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
5871
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5872 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
5873 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5874 OscarData *od = (OscarData *)gc->proto_data;
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
5875 int i;
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
5876 va_list ap;
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
5877 int numtypes;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5878 fu16_t *maxitems;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5879
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5880 va_start(ap, fr);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5881 numtypes = va_arg(ap, int);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5882 maxitems = va_arg(ap, fu16_t *);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5883 va_end(ap);
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5884
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5885 gaim_debug_misc("oscar", "ssi rights:");
5211
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
5886
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5887 for (i=0; i<numtypes; i++)
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5888 gaim_debug_misc(NULL, " max type 0x%04x=%hd,",
5211
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
5889 i, maxitems[i]);
94d9756c381f [gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents: 5208
diff changeset
5890
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5891 gaim_debug_misc(NULL, "\n");
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5892
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5893 if (numtypes >= 0)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5894 od->rights.maxbuddies = maxitems[0];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5895 if (numtypes >= 1)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5896 od->rights.maxgroups = maxitems[1];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5897 if (numtypes >= 2)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5898 od->rights.maxpermits = maxitems[2];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5899 if (numtypes >= 3)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5900 od->rights.maxdenies = maxitems[3];
2991
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 return 1;
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5903 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5904
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5905 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
5906 GaimConnection *gc = sess->aux_data;
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
5907 GaimAccount *account = gaim_connection_get_account(gc);
9988
f58c80ea22ee [gaim-migrate @ 10901]
Gary Kramlich <grim@pidgin.im>
parents: 9982
diff changeset
5908 GaimStatus *status;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
5909 OscarData *od = (OscarData *)gc->proto_data;
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5910 GaimGroup *g;
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5911 GaimBuddy *b;
2995
33231d4b2cd3 [gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents: 2994
diff changeset
5912 struct aim_ssi_item *curitem;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5913 int tmp;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5914 va_list ap;
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
5915 fu16_t fmtver, numitems;
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
5916 struct aim_ssi_item *items;
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
5917 fu32_t timestamp;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5918
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5919 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5920 fmtver = (fu16_t)va_arg(ap, int);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5921 numitems = (fu16_t)va_arg(ap, int);
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
5922 items = va_arg(ap, struct aim_ssi_item *);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
5923 timestamp = va_arg(ap, fu32_t);
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
5924 va_end(ap);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5925
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5926 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
5927 "ssi: syncing local list and server list\n");
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5928
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
5929 if ((timestamp == 0) || (numitems == 0)) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5930 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
5931 return 1;
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
5932 }
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
5933
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5934 /* Clean the buddy list */
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
5935 aim_ssi_cleanlist(sess);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
5936
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5937 { /* If not in server list then prune from local list */
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5938 GaimBlistNode *gnode, *cnode, *bnode;
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5939 GaimBuddyList *blist;
9539
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
5940 GSList *cur, *next;
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5941
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5942 /* Buddies */
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5943 cur = NULL;
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5944 if ((blist = gaim_get_blist()) != NULL) {
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5945 for (gnode = blist->root; gnode; gnode = gnode->next) {
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5946 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5947 continue;
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5948 g = (GaimGroup *)gnode;
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5949 for (cnode = gnode->child; cnode; cnode = cnode->next) {
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5950 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode))
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 for (bnode = cnode->child; bnode; bnode = bnode->next) {
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5953 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5954 continue;
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5955 b = (GaimBuddy *)bnode;
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5956 if (b->account == gc->account) {
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5957 if (aim_ssi_itemlist_exists(sess->ssi.local, b->name)) {
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5958 /* If the buddy is an ICQ user then load his nickname */
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5959 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
5960 char *alias;
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5961 if (servernick)
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5962 serv_got_alias(gc, b->name, servernick);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5963
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5964 /* Store local alias on server */
8214
8ba5bacfa054 [gaim-migrate @ 8937]
Nathan Walp <nwalp@pidgin.im>
parents: 8175
diff changeset
5965 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
5966 if (!alias && b->alias && strlen(b->alias))
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5967 aim_ssi_aliasbuddy(sess, g->name, b->name, b->alias);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5968 free(alias);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5969 } else {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
5970 gaim_debug_info("oscar",
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5971 "ssi: removing buddy %s from local list\n", b->name);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5972 /* 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
5973 cur = g_slist_prepend(cur, b);
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 }
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5977 }
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5978 }
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5979 }
8175
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
5980
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5981 while (cur != NULL) {
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5982 b = cur->data;
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5983 cur = g_slist_remove(cur, b);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5984 gaim_blist_remove_buddy(b);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5985 }
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5986
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5987 /* Permit list */
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5988 if (gc->account->permit) {
9539
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
5989 next = gc->account->permit;
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
5990 while (next != NULL) {
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
5991 cur = next;
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
5992 next = next->next;
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5993 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
5994 gaim_debug_info("oscar",
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5995 "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
5996 gaim_privacy_permit_remove(account, cur->data, TRUE);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5997 }
9539
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
5998 }
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
5999 }
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6000
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6001 /* Deny list */
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6002 if (gc->account->deny) {
9539
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
6003 next = gc->account->deny;
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
6004 while (next != NULL) {
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
6005 cur = next;
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
6006 next = next->next;
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6007 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
6008 gaim_debug_info("oscar",
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6009 "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
6010 gaim_privacy_deny_remove(account, cur->data, TRUE);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6011 }
9539
5528f58dea4d [gaim-migrate @ 10367]
Mark Doliner <markdoliner@pidgin.im>
parents: 9532
diff changeset
6012 }
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6013 }
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6014 /* Presence settings (idle time visibility) */
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6015 if ((tmp = aim_ssi_getpresence(sess->ssi.local)) != 0xFFFFFFFF)
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6016 if (!(tmp & 0x400))
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6017 aim_ssi_setpresence(sess, tmp | 0x400);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6018 } /* end pruning buddies from local list */
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6019
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6020 /* Add from server list to local list */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6021 for (curitem=sess->ssi.local; curitem; curitem=curitem->next) {
7328
978db7a49075 [gaim-migrate @ 7914]
Mark Doliner <markdoliner@pidgin.im>
parents: 7313
diff changeset
6022 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
6023 switch (curitem->type) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6024 case 0x0000: { /* Buddy */
4251
7d62db57d86a [gaim-migrate @ 4501]
Mark Doliner <markdoliner@pidgin.im>
parents: 4249
diff changeset
6025 if (curitem->name) {
4292
249d89e1b14c [gaim-migrate @ 4545]
Mark Doliner <markdoliner@pidgin.im>
parents: 4282
diff changeset
6026 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
6027 char *gname_utf8 = gname ? gaim_utf8_try_convert(gname) : NULL;
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
6028 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
6029 char *alias_utf8 = alias ? gaim_utf8_try_convert(alias) : NULL;
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6030 b = gaim_find_buddy(gc->account, curitem->name);
4458
f4d2daa33ea5 [gaim-migrate @ 4733]
Trogdor
parents: 4452
diff changeset
6031 /* Should gname be freed here? -- elb */
4754
216cd548ad68 [gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents: 4744
diff changeset
6032 /* Not with the current code, but that might be cleaner -- med */
4458
f4d2daa33ea5 [gaim-migrate @ 4733]
Trogdor
parents: 4452
diff changeset
6033 free(alias);
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6034 if (b) {
4292
249d89e1b14c [gaim-migrate @ 4545]
Mark Doliner <markdoliner@pidgin.im>
parents: 4282
diff changeset
6035 /* Get server stored alias */
4705
cc6029a0379c [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
6036 if (alias_utf8) {
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6037 g_free(b->alias);
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6038 b->alias = g_strdup(alias_utf8);
4705
cc6029a0379c [gaim-migrate @ 5016]
Nathan Walp <nwalp@pidgin.im>
parents: 4690
diff changeset
6039 }
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
6040 } else {
8150
1b48c11a456e [gaim-migrate @ 8862]
Mark Doliner <markdoliner@pidgin.im>
parents: 8143
diff changeset
6041 b = gaim_buddy_new(gc->account, curitem->name, alias_utf8);
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
6042
4754
216cd548ad68 [gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents: 4744
diff changeset
6043 if (!(g = gaim_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6044 g = gaim_group_new(gname_utf8 ? gname_utf8 : _("Orphans"));
4754
216cd548ad68 [gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents: 4744
diff changeset
6045 gaim_blist_add_group(g, NULL);
216cd548ad68 [gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents: 4744
diff changeset
6046 }
5146
56b1615ba288 [gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents: 5136
diff changeset
6047
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6048 gaim_debug_info("oscar",
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
6049 "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
6050 gaim_blist_add_buddy(b, NULL, g, NULL);
4251
7d62db57d86a [gaim-migrate @ 4501]
Mark Doliner <markdoliner@pidgin.im>
parents: 4249
diff changeset
6051 }
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6052 if (!aim_sncmp(curitem->name, account->username)) {
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6053 char *comment = aim_ssi_getcomment(sess->ssi.local, gname, curitem->name);
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6054 gaim_check_comment(od, comment);
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6055 free(comment);
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6056 }
7162
dfd30c70acde [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
6057 g_free(gname_utf8);
dfd30c70acde [gaim-migrate @ 7729]
Nathan Walp <nwalp@pidgin.im>
parents: 7160
diff changeset
6058 g_free(alias_utf8);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6059 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6060 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6061
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6062 case 0x0001: { /* Group */
4282
93cc9fb8e29f [gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents: 4276
diff changeset
6063 /* Shouldn't add empty groups */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6064 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6065
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6066 case 0x0002: { /* Permit buddy */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6067 if (curitem->name) {
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6068 /* if (!find_permdeny_by_name(gc->permit, curitem->name)) { AAA */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6069 GSList *list;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6070 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
6071 if (!list) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6072 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6073 "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
6074 gaim_privacy_permit_add(account, curitem->name, TRUE);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6075 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6076 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6077 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6078
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6079 case 0x0003: { /* Deny buddy */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6080 if (curitem->name) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6081 GSList *list;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6082 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
6083 if (!list) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6084 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6085 "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
6086 gaim_privacy_deny_add(account, curitem->name, TRUE);
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6087 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6088 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6089 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6090
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6091 case 0x0004: { /* Permit/deny setting */
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6092 if (curitem->data) {
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6093 fu8_t permdeny;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6094 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
6095 gaim_debug_info("oscar",
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6096 "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
6097 account->perm_deny = permdeny;
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6098 if (od->icq && account->perm_deny == 0x03) {
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6099 gaim_presence_switch_status(account->presence, OSCAR_STATUS_ID_INVISIBLE);
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
6100 }
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6101 }
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6102 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6103 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6104
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6105 case 0x0005: { /* Presence setting */
3109
c193eb9c1c30 [gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents: 3106
diff changeset
6106 /* 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
6107 } break;
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6108 } /* End of switch on curitem->type */
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6109 } /* End of for loop */
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6110
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6111 /*
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6112 * 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
6113 * 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
6114 * setting.
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6115 */
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
6116 status = gaim_presence_get_active_status(account->presence);
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
6117 if (gaim_status_is_available(status))
4901
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
6118 aim_setextstatus(sess, AIM_ICQ_STATE_NORMAL);
8a9aebd9897f [gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents: 4898
diff changeset
6119
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
6120 /* Activate SSI */
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
6121 /* 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
6122 /* 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
6123 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6124 "ssi: activating server-stored buddy list\n");
4642
a491791dc1a1 [gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents: 4641
diff changeset
6125 aim_ssi_enable(sess);
4342
a352530e1a6a [gaim-migrate @ 4607]
Aubin LaBrosse
parents: 4337
diff changeset
6126
2991
692468b98a03 [gaim-migrate @ 3004]
Rob Flynn <gaim@robflynn.com>
parents: 2989
diff changeset
6127 return 1;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6128 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6129
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6130 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
6131 GaimConnection *gc = sess->aux_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6132 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6133 struct aim_ssi_tmp *retval;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6134
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6135 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6136 retval = va_arg(ap, struct aim_ssi_tmp *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6137 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6138
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6139 while (retval) {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6140 gaim_debug_misc("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6141 "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
6142
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6143 if (retval->ack != 0xffff)
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6144 switch (retval->ack) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6145 case 0x0000: { /* added successfully */
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6146 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6147
4829
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
6148 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
6149 gchar *buf;
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
6150 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
6151 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
6152 gaim_notify_error(gc, NULL, _("Unable To Add"), buf);
4829
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
6153 g_free(buf);
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
6154 }
9dd8fea5795e [gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents: 4828
diff changeset
6155
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
6156 case 0x000e: { /* buddy requires authorization */
4828
a7a331159e7d [gaim-migrate @ 5153]
Mark Doliner <markdoliner@pidgin.im>
parents: 4827
diff changeset
6157 if ((retval->action == AIM_CB_SSI_ADD) && (retval->name))
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6158 gaim_auth_sendrequest(gc, retval->name);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6159 } break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6160
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6161 default: { /* La la la */
5197
ab4d919050d7 [gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents: 5167
diff changeset
6162 gchar *buf;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6163 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
6164 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
6165 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
6166 gaim_notify_error(gc, NULL, _("Unable To Add"), buf);
5197
ab4d919050d7 [gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents: 5167
diff changeset
6167 g_free(buf);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6168 } break;
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 retval = retval->next;
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
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6174 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6175 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6176
8227
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6177 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
6178 GaimConnection *gc = sess->aux_data;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6179 char *gname, *gname_utf8, *alias, *alias_utf8;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6180 GaimBuddy *b;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6181 GaimGroup *g;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6182 va_list ap;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6183 fu16_t type;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6184 const char *name;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6185
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6186 va_start(ap, fr);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6187 type = (fu16_t)va_arg(ap, int);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6188 name = va_arg(ap, char *);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6189 va_end(ap);
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 if ((type != 0x0000) || (name == NULL))
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6192 return 1;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6193
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6194 gname = aim_ssi_itemlist_findparentname(sess->ssi.local, name);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6195 gname_utf8 = gname ? gaim_utf8_try_convert(gname) : NULL;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6196 alias = aim_ssi_getalias(sess->ssi.local, gname, name);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6197 alias_utf8 = alias ? gaim_utf8_try_convert(alias) : NULL;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6198 b = gaim_find_buddy(gc->account, name);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6199 free(alias);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6200
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6201 if (b) {
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6202 /* Get server stored alias */
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6203 if (alias_utf8) {
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6204 g_free(b->alias);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6205 b->alias = g_strdup(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 } else {
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6208 b = gaim_buddy_new(gc->account, name, alias_utf8);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6209
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6210 if (!(g = gaim_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) {
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6211 g = gaim_group_new(gname_utf8 ? gname_utf8 : _("Orphans"));
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6212 gaim_blist_add_group(g, NULL);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6213 }
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6214
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6215 gaim_debug_info("oscar",
9285
9cedf5d26577 [gaim-migrate @ 10088]
Mark Doliner <markdoliner@pidgin.im>
parents: 9244
diff changeset
6216 "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
6217 gaim_blist_add_buddy(b, NULL, g, NULL);
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 g_free(gname_utf8);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6220 g_free(alias_utf8);
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6221
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6222 return 1;
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6223 }
07e453e04577 [gaim-migrate @ 8950]
Mark Doliner <markdoliner@pidgin.im>
parents: 8225
diff changeset
6224
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6225 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
6226 GaimConnection *gc = sess->aux_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6227 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6228 char *sn, *msg;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6229 gchar *dialog_msg, *nombre;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6230 struct name_data *data;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6231 GaimBuddy *buddy;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6232
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6233 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6234 sn = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6235 msg = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6236 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6237
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6238 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6239 "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
6240
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6241 buddy = gaim_find_buddy(gc->account, sn);
9620
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
6242 if (buddy && (gaim_buddy_get_alias_only(buddy)))
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
6243 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
6244 else
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6245 nombre = g_strdup(sn);
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6246
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6247 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
6248 data = g_new(struct name_data, 1);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6249 data->gc = gc;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6250 data->name = g_strdup(sn);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6251 data->nick = NULL;
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6252
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6253 gaim_request_yes_no(gc, NULL, _("Authorization Given"), dialog_msg,
10116
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10111
diff changeset
6254 GAIM_DEFAULT_ACTION_NONE, data,
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
6255 G_CALLBACK(gaim_icq_buddyadd),
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
6256 G_CALLBACK(oscar_free_name_data));
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6257
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6258 g_free(dialog_msg);
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6259 g_free(nombre);
4230
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 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6262 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6263
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6264 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
6265 GaimConnection *gc = sess->aux_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6266 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6267 char *sn, *msg;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6268 gchar *dialog_msg, *nombre;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6269 struct name_data *data;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6270 GaimBuddy *buddy;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6271
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6272 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6273 sn = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6274 msg = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6275 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6276
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6277 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6278 "ssi: received authorization request from %s\n", sn);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6279
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6280 buddy = gaim_find_buddy(gc->account, sn);
9620
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
6281 if (buddy && (gaim_buddy_get_alias_only(buddy)))
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
6282 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
6283 else
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6284 nombre = g_strdup(sn);
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6285
4337
f74d112ccb7c [gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents: 4336
diff changeset
6286 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
6287 data = g_new(struct name_data, 1);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6288 data->gc = gc;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6289 data->name = g_strdup(sn);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6290 data->nick = NULL;
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6291
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6292 gaim_request_action(gc, NULL, _("Authorization Request"), dialog_msg,
9972
f39adb92a177 [gaim-migrate @ 10883]
Mark Doliner <markdoliner@pidgin.im>
parents: 9971
diff changeset
6293 GAIM_DEFAULT_ACTION_NONE, data, 2,
5498
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6294 _("Authorize"), G_CALLBACK(gaim_auth_grant),
01eec144d71b [gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents: 5497
diff changeset
6295 _("Deny"), G_CALLBACK(gaim_auth_dontgrant_msgprompt));
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6296
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6297 g_free(dialog_msg);
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6298 g_free(nombre);
4230
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 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6301 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6302
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6303 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
6304 GaimConnection *gc = sess->aux_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6305 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6306 char *sn, *msg;
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6307 gchar *dialog_msg, *nombre;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6308 fu8_t reply;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6309 GaimBuddy *buddy;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6310
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6311 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6312 sn = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6313 reply = (fu8_t)va_arg(ap, int);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6314 msg = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6315 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6316
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6317 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6318 "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
6319
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6320 buddy = gaim_find_buddy(gc->account, sn);
9620
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
6321 if (buddy && (gaim_buddy_get_alias_only(buddy)))
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
6322 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
6323 else
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6324 nombre = g_strdup(sn);
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6325
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6326 if (reply) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6327 /* Granted */
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
6328 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
6329 gaim_notify_info(gc, NULL, _("Authorization Granted"), dialog_msg);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6330 } else {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6331 /* Denied */
7023
fc2e93673525 [gaim-migrate @ 7586]
Ambrose Li <ambrose.li@gmail.com>
parents: 7015
diff changeset
6332 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
6333 gaim_notify_info(gc, NULL, _("Authorization Denied"), dialog_msg);
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 g_free(dialog_msg);
4236
71a063fb2d7a [gaim-migrate @ 4482]
Etan Reisner <deryni@pidgin.im>
parents: 4233
diff changeset
6336 g_free(nombre);
4230
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 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6339 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6340
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6341 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
6342 GaimConnection *gc = sess->aux_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6343 va_list ap;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6344 char *sn;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6345 GaimBuddy *buddy;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6346
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6347 va_start(ap, fr);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6348 sn = va_arg(ap, char *);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6349 va_end(ap);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6350
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6351 buddy = gaim_find_buddy(gc->account, sn);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6352 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6353 "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
6354 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
6355
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6356 return 1;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6357 }
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6358 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6359
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6360 static GList *oscar_chat_info(GaimConnection *gc) {
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6361 GList *m = NULL;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6362 struct proto_chat_entry *pce;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6363
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6364 pce = g_new0(struct proto_chat_entry, 1);
9770
d61fe8dcb6d9 [gaim-migrate @ 10638]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9758
diff changeset
6365 pce->label = _("_Room:");
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6366 pce->identifier = "room";
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6367 m = g_list_append(m, pce);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6368
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6369 pce = g_new0(struct proto_chat_entry, 1);
7841
0000a4c68bf8 [gaim-migrate @ 8494]
Mark Doliner <markdoliner@pidgin.im>
parents: 7805
diff changeset
6370 pce->label = _("_Exchange:");
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6371 pce->identifier = "exchange";
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6372 pce->is_int = TRUE;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6373 pce->min = 4;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6374 pce->max = 20;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6375 m = g_list_append(m, pce);
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6376
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6377 return m;
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6378 }
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6379
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6380 GHashTable *oscar_chat_info_defaults(GaimConnection *gc, const char *chat_name)
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6381 {
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6382 GHashTable *defaults;
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6383
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6384 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
6385
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6386 if (chat_name != NULL)
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6387 g_hash_table_insert(defaults, "room", g_strdup(chat_name));
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6388
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6389 return defaults;
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6390 }
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
6391
9917
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9914
diff changeset
6392 static char *oscar_get_chat_name(GHashTable *data) {
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9914
diff changeset
6393 return g_strdup(g_hash_table_lookup(data, "room"));
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9914
diff changeset
6394 }
2fbb3c9fab2b [gaim-migrate @ 10809]
Daniel Atallah <datallah@pidgin.im>
parents: 9914
diff changeset
6395
8308
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6396 static void oscar_join_chat(GaimConnection *gc, GHashTable *data) {
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6397 OscarData *od = (OscarData *)gc->proto_data;
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
6398 aim_conn_t *cur;
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6399 char *name, *exchange;
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6400
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6401 name = g_hash_table_lookup(data, "room");
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6402 exchange = g_hash_table_lookup(data, "exchange");
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2197
diff changeset
6403
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6404 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6405 "Attempting to join chat room %s.\n", name);
8308
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6406
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6407 if ((name == NULL) || (*name == '\0')) {
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6408 gaim_notify_error(gc, NULL, _("Invalid chat name specified."), NULL);
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6409 return;
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6410 }
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6411
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6412 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
6413 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6414 "chatnav exists, creating room\n");
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6415 aim_chatnav_createroom(od->sess, cur, name, atoi(exchange));
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6416 } else {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6417 /* this gets tricky */
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
6418 struct create_room *cr = g_new0(struct create_room, 1);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6419 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6420 "chatnav does not exist, opening chatnav\n");
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5219
diff changeset
6421 cr->exchange = atoi(exchange);
2822
a1ddcd96da44 [gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2821
diff changeset
6422 cr->name = g_strdup(name);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6423 od->create_rooms = g_slist_append(od->create_rooms, cr);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6424 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_CHATNAV);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6425 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6426 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6427
8308
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6428 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
6429 OscarData *od = (OscarData *)gc->proto_data;
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6430 struct chat_connection *ccon = find_oscar_chat(gc, id);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6431
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6432 if (!ccon)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6433 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6434
8225
4ef47db8c9bc [gaim-migrate @ 8948]
Mark Doliner <markdoliner@pidgin.im>
parents: 8219
diff changeset
6435 aim_im_sendch2_chatinvite(od->sess, name, message ? message : "",
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6436 ccon->exchange, ccon->name, 0x0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6437 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6438
8308
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6439 static void oscar_chat_leave(GaimConnection *gc, int id) {
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6440 OscarData *od = gc ? (OscarData *)gc->proto_data : NULL;
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6441 GSList *bcs = gc->buddy_chats;
5679
943eb70954b6 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
6442 GaimConversation *b = NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6443 struct chat_connection *c = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6444 int count = 0;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6445
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6446 while (bcs) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6447 count++;
5679
943eb70954b6 [gaim-migrate @ 6097]
Nathan Walp <nwalp@pidgin.im>
parents: 5646
diff changeset
6448 b = (GaimConversation *)bcs->data;
7118
280b3b85a28a [gaim-migrate @ 7685]
Christian Hammond <chipx86@chipx86.com>
parents: 7111
diff changeset
6449 if (id == gaim_conv_chat_get_id(GAIM_CONV_CHAT(b)))
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6450 break;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6451 bcs = bcs->next;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6452 b = NULL;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6453 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6454
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6455 if (!b)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6456 return;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6457
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6458 gaim_debug_info("oscar",
5219
49255563aa61 [gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents: 5211
diff changeset
6459 "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
6460
8308
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6461 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
6462 if (c != NULL) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6463 if (od)
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6464 od->oscar_chats = g_slist_remove(od->oscar_chats, c);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6465 if (c->inpa > 0)
2090
bab8b7e309db [gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2086
diff changeset
6466 gaim_input_remove(c->inpa);
8308
88f1dc8588a8 [gaim-migrate @ 9032]
Mark Doliner <markdoliner@pidgin.im>
parents: 8287
diff changeset
6467 if (gc && od->sess)
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
6468 aim_conn_kill(od->sess, &c->conn);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6469 g_free(c->name);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6470 g_free(c->show);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6471 g_free(c);
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 /* 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
6474 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
6475 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6476
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
6477 static int oscar_send_chat(GaimConnection *gc, int id, const char *message) {
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
6478 OscarData *od = (OscarData *)gc->proto_data;
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
6479 GaimConversation *conv = NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6480 struct chat_connection *c = NULL;
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
6481 char *buf, *buf2;
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
6482 fu16_t charset, charsubset;
9807
ff713acc7204 [gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents: 9806
diff changeset
6483 char *charsetstr = NULL;
10111
61dd88113afc [gaim-migrate @ 11144]
Nathan Walp <nwalp@pidgin.im>
parents: 10098
diff changeset
6484 int len;
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
6485
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
6486 if (!(conv = gaim_find_chat(gc, id)))
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 if (!(c = find_oscar_chat_by_conv(gc, conv)))
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
6490 return -EINVAL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6491
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
6492 buf = gaim_strdup_withhtml(message);
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
6493 len = strlen(buf);
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
6494
8962
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6495 if (strstr(buf, "<IMG "))
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6496 gaim_conversation_write(conv, "",
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6497 _("Your IM Image was not sent. "
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6498 "You cannot send IM Images in AIM chats."),
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6499 GAIM_MESSAGE_ERROR, time(NULL));
5cd12e525d95 [gaim-migrate @ 9736]
Tim Ringenbach <marv@pidgin.im>
parents: 8950
diff changeset
6500
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
6501 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
6502 if ((len > c->maxlen) || (len > c->maxvis)) {
3c62ea91eba8 [gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents: 8353
diff changeset
6503 g_free(buf2);
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
6504 return -E2BIG;
8359
3c62ea91eba8 [gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents: 8353
diff changeset
6505 }
3c62ea91eba8 [gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents: 8353
diff changeset
6506
9831
dfebe1c6bffe [gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents: 9830
diff changeset
6507 if (charset == AIM_CHARSET_ASCII)
dfebe1c6bffe [gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents: 9830
diff changeset
6508 charsetstr = "us-ascii";
dfebe1c6bffe [gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents: 9830
diff changeset
6509 else if (charset == AIM_CHARSET_UNICODE)
dfebe1c6bffe [gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents: 9830
diff changeset
6510 charsetstr = "unicode-2-0";
dfebe1c6bffe [gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents: 9830
diff changeset
6511 else if (charset == AIM_CHARSET_CUSTOM)
dfebe1c6bffe [gaim-migrate @ 10702]
Mark Doliner <markdoliner@pidgin.im>
parents: 9830
diff changeset
6512 charsetstr = "iso-8859-1";
9807
ff713acc7204 [gaim-migrate @ 10675]
Mark Doliner <markdoliner@pidgin.im>
parents: 9806
diff changeset
6513 aim_chat_send_im(od->sess, c->conn, 0, buf2, len, charsetstr, "en");
8219
861fb38427f0 [gaim-migrate @ 8942]
Uli Luckas
parents: 8214
diff changeset
6514 g_free(buf2);
8359
3c62ea91eba8 [gaim-migrate @ 9083]
Mark Doliner <markdoliner@pidgin.im>
parents: 8353
diff changeset
6515
2167
cbb558585911 [gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2162
diff changeset
6516 return 0;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6517 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6518
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6519 static const char *oscar_list_icon(GaimAccount *a, GaimBuddy *b)
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6520 {
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
6521 if (!b || (b && b->name && b->name[0] == '+')) {
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
6522 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
6523 return "icq";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6524 else
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6525 return "aim";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6526 }
5646
0aa637549d87 [gaim-migrate @ 6060]
Christian Hammond <chipx86@chipx86.com>
parents: 5638
diff changeset
6527
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
6528 if (b != NULL && aim_sn_is_icq(b->name))
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6529 return "icq";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6530 return "aim";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6531 }
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6532
9972
f39adb92a177 [gaim-migrate @ 10883]
Mark Doliner <markdoliner@pidgin.im>
parents: 9971
diff changeset
6533 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
6534 {
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6535 GaimConnection *gc = NULL;
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6536 OscarData *od = NULL;
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6537 GaimAccount *account = NULL;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6538 GaimPresence *presence;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6539 GaimStatus *status;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6540 const char *status_id;
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6541 char *emblems[4] = {NULL,NULL,NULL,NULL};
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6542 int i = 0;
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6543 aim_userinfo_t *userinfo = NULL;
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6544
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6545 if (b != NULL)
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6546 account = b->account;
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6547 if (account != NULL)
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6548 gc = account->gc;
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6549 if (gc != NULL)
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6550 od = gc->proto_data;
7945
7270cd25f841 [gaim-migrate @ 8619]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
6551 if (od != NULL)
7270cd25f841 [gaim-migrate @ 8619]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
6552 userinfo = aim_locate_finduserinfo(od->sess, b->name);
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6553
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6554 presence = gaim_buddy_get_presence(b);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6555 status = gaim_presence_get_active_status(presence);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6556 status_id = gaim_status_get_id(status);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6557
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6558 if (gaim_presence_is_online(presence) == FALSE) {
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6559 char *gname;
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6560 if ((b->name) && (od) && (od->sess->ssi.received_data) &&
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6561 (gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name)) &&
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6562 (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name))) {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6563 emblems[i++] = "notauthorized";
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6564 } else {
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6565 emblems[i++] = "offline";
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6566 }
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6567 }
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4901
diff changeset
6568
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6569 if (b->name && aim_sn_is_icq(b->name)) {
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6570 if (!strcmp(status_id, OSCAR_STATUS_ID_INVISIBLE))
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6571 emblems[i++] = "invisible";
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6572 else if (!strcmp(status_id, OSCAR_STATUS_ID_FREE4CHAT))
4960
65bf67b7600f [gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents: 4959
diff changeset
6573 emblems[i++] = "freeforchat";
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6574 else if (!strcmp(status_id, OSCAR_STATUS_ID_DND))
4960
65bf67b7600f [gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents: 4959
diff changeset
6575 emblems[i++] = "dnd";
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6576 else if (!strcmp(status_id, OSCAR_STATUS_ID_NA))
4960
65bf67b7600f [gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents: 4959
diff changeset
6577 emblems[i++] = "na";
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6578 else if (!strcmp(status_id, OSCAR_STATUS_ID_OCCUPIED))
4960
65bf67b7600f [gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents: 4959
diff changeset
6579 emblems[i++] = "occupied";
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6580 else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY))
4766
4fa5a774d200 [gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents: 4763
diff changeset
6581 emblems[i++] = "away";
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6582 } else if (!strcmp(status_id, OSCAR_STATUS_ID_AWAY)) {
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6583 emblems[i++] = "away";
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6584 }
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6585
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6586 if (userinfo != NULL ) {
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6587 /* if (userinfo->flags & AIM_FLAG_UNCONFIRMED)
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6588 emblems[i++] = "unconfirmed"; */
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6589 if (userinfo->flags & AIM_FLAG_ADMINISTRATOR)
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6590 emblems[i++] = "admin";
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6591 if (userinfo->flags & AIM_FLAG_AOL)
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6592 emblems[i++] = "aol";
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6593 if (userinfo->flags & AIM_FLAG_WIRELESS)
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6594 emblems[i++] = "wireless";
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6595 if (userinfo->flags & AIM_FLAG_ACTIVEBUDDY)
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6596 emblems[i++] = "activebuddy";
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6597
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6598 if ((i < 4) && (userinfo->capabilities & AIM_CAPS_HIPTOP))
7945
7270cd25f841 [gaim-migrate @ 8619]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
6599 emblems[i++] = "hiptop";
7270cd25f841 [gaim-migrate @ 8619]
Mark Doliner <markdoliner@pidgin.im>
parents: 7880
diff changeset
6600
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6601 if ((i < 4) && (userinfo->capabilities & AIM_CAPS_SECUREIM))
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6602 emblems[i++] = "secure";
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6603 }
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6604
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6605 *se = emblems[0];
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6606 *sw = emblems[1];
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6607 *nw = emblems[2];
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6608 *ne = emblems[3];
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6609 }
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
6610
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
6611 static char *oscar_tooltip_text(GaimBuddy *b) {
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6612 GaimConnection *gc = b->account->gc;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
6613 OscarData *od = gc->proto_data;
7045
458b55091f8b [gaim-migrate @ 7608]
Mark Doliner <markdoliner@pidgin.im>
parents: 7038
diff changeset
6614 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
6615 GString *str = g_string_new("");
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6616
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6617 if (GAIM_BUDDY_IS_ONLINE(b)) {
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
6618 oscar_string_append_info(gc, str, "\n", b, userinfo);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
6619
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
6620 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
6621 gchar *charset = oscar_encoding_extract(userinfo->away_encoding);
8392
6e8d04bc180d [gaim-migrate @ 9121]
Mark Doliner <markdoliner@pidgin.im>
parents: 8363
diff changeset
6622 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
6623 g_free(charset);
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
6624 if (away_utf8 != NULL) {
7091
4430f44e86ad [gaim-migrate @ 7656]
Mark Doliner <markdoliner@pidgin.im>
parents: 7083
diff changeset
6625 gchar *tmp1, *tmp2;
9627
4a7636442f25 [gaim-migrate @ 10471]
Sean Egan <seanegan@pidgin.im>
parents: 9626
diff changeset
6626 tmp2 = gaim_markup_strip_html(away_utf8);
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6627 g_free(away_utf8);
8571
2e789c27f81e [gaim-migrate @ 9319]
Mark Doliner <markdoliner@pidgin.im>
parents: 8568
diff changeset
6628 tmp1 = gaim_escape_html(tmp2);
7091
4430f44e86ad [gaim-migrate @ 7656]
Mark Doliner <markdoliner@pidgin.im>
parents: 7083
diff changeset
6629 g_free(tmp2);
8700
0c9288c5e40e [gaim-migrate @ 9453]
Mark Doliner <markdoliner@pidgin.im>
parents: 8697
diff changeset
6630 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
6631 g_free(tmp1);
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
6632 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
6633 g_free(tmp2);
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
6634 }
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6635 }
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
6636 }
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
6637
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
6638 return g_string_free(str, FALSE);
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6639 }
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
6640
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6641 static char *oscar_status_text(GaimBuddy *b)
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6642 {
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6643 GaimConnection *gc;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6644 OscarData *od;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6645 GaimStatus *status;
5167
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6646 gchar *ret = NULL;
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6647
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6648 gc = gaim_account_get_connection(gaim_buddy_get_account(b));
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6649 od = gc->proto_data;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6650 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
6651
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6652 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
6653 if (aim_sn_is_icq(b->name))
8701
333da120f414 [gaim-migrate @ 9454]
Mark Doliner <markdoliner@pidgin.im>
parents: 8700
diff changeset
6654 ret = oscar_icqstatus((b->uc & 0xffff0000) >> 16);
7038
59ed07d7f73a [gaim-migrate @ 7601]
Mark Doliner <markdoliner@pidgin.im>
parents: 7037
diff changeset
6655 else
59ed07d7f73a [gaim-migrate @ 7601]
Mark Doliner <markdoliner@pidgin.im>
parents: 7037
diff changeset
6656 ret = g_strdup(_("Away"));
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
6657 } else if (GAIM_BUDDY_IS_ONLINE(b)) {
7261
4be05820d441 [gaim-migrate @ 7838]
Nathan Walp <nwalp@pidgin.im>
parents: 7259
diff changeset
6658 struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, gaim_normalize(b->account, b->name));
10116
054b064145a1 [gaim-migrate @ 11153]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10111
diff changeset
6659 if ((bi != NULL) && (bi->availmsg != NULL))
6292
ec8a58bc2b87 [gaim-migrate @ 6791]
Mark Doliner <markdoliner@pidgin.im>
parents: 6281
diff changeset
6660 ret = g_markup_escape_text(bi->availmsg, strlen(bi->availmsg));
5836
88819e4cc840 [gaim-migrate @ 6267]
Mark Doliner <markdoliner@pidgin.im>
parents: 5828
diff changeset
6661 } else {
5167
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6662 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
6663 if (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name))
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6664 ret = g_strdup(_("Not Authorized"));
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6665 else
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6666 ret = g_strdup(_("Offline"));
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
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6669 return ret;
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6670 }
e6674b684b55 [gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents: 5163
diff changeset
6671
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6672
5844
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
6673 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
6674 GaimConnection *gc = sess->aux_data;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
6675 OscarData *od = gc->proto_data;
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6676 va_list ap;
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6677 fu16_t type;
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6678 fu8_t flags = 0, length = 0;
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6679 char *md5 = NULL;
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6680
7334
4d1a7f313b70 [gaim-migrate @ 7922]
Mark Doliner <markdoliner@pidgin.im>
parents: 7328
diff changeset
6681
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6682 va_start(ap, fr);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6683 type = va_arg(ap, int);
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6684
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6685 switch(type) {
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6686 case 0x0000:
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6687 case 0x0001: {
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6688 flags = va_arg(ap, int);
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6689 length = va_arg(ap, int);
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6690 md5 = va_arg(ap, char *);
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6691
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6692 if (flags == 0x41) {
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6693 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
6694 od->iconconnecting = TRUE;
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6695 od->set_icon = TRUE;
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6696 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_ICON);
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6697 } else {
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6698 struct stat st;
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6699 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
6700 if (iconfile == NULL) {
8363
d46380322c37 [gaim-migrate @ 9088]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8361
diff changeset
6701 aim_ssi_delicon(od->sess);
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6702 } else if (!stat(iconfile, &st)) {
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6703 char *buf = g_malloc(st.st_size);
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6704 FILE *file = fopen(iconfile, "rb");
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6705 if (file) {
9532
32470c5a1d58 [gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 9481
diff changeset
6706 /* XXX - Use g_file_get_contents()? */
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6707 fread(buf, 1, st.st_size, file);
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6708 fclose(file);
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6709 gaim_debug_info("oscar",
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6710 "Uploading icon to icon server\n");
6879
cc7abcef355c [gaim-migrate @ 7425]
Mark Doliner <markdoliner@pidgin.im>
parents: 6873
diff changeset
6711 aim_bart_upload(od->sess, buf, st.st_size);
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6712 } else
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6713 gaim_debug_error("oscar",
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6714 "Can't open buddy icon file!\n");
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6715 g_free(buf);
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
6716 } else {
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6717 gaim_debug_error("oscar",
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6718 "Can't stat buddy icon file!\n");
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6719 }
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6720 }
8363
d46380322c37 [gaim-migrate @ 9088]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8361
diff changeset
6721 } else if (flags == 0x81) {
d46380322c37 [gaim-migrate @ 9088]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8361
diff changeset
6722 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
6723 if (iconfile == NULL)
d46380322c37 [gaim-migrate @ 9088]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8361
diff changeset
6724 aim_ssi_delicon(od->sess);
d46380322c37 [gaim-migrate @ 9088]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8361
diff changeset
6725 else
d46380322c37 [gaim-migrate @ 9088]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8361
diff changeset
6726 aim_ssi_seticon(od->sess, md5, length);
d46380322c37 [gaim-migrate @ 9088]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8361
diff changeset
6727 }
5892
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 case 0x0002: { /* We just set an "available" message? */
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6731 } break;
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6732 }
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6733
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6734 va_end(ap);
5844
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
6735
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
6736 return 0;
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
6737 }
5892
fe6738e57d73 [gaim-migrate @ 6324]
Mark Doliner <markdoliner@pidgin.im>
parents: 5872
diff changeset
6738
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6739 static void oscar_set_permit_deny(GaimConnection *gc) {
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6740 GaimAccount *account = gaim_connection_get_account(gc);
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
6741 OscarData *od = (OscarData *)gc->proto_data;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6742 #ifdef NOSSI
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8092
diff changeset
6743 GSList *list;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6744 char buf[MAXMSGLEN];
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6745 int at;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6746
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6747 switch(account->perm_deny) {
8175
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6748 case GAIM_PRIVACY_ALLOW_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_DENYADD, 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_DENY_ALL:
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6752 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
6753 break;
8175
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6754 case GAIM_PRIVACY_ALLOW_USERS:
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6755 list = account->permit;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6756 at = 0;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6757 while (list) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6758 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
6759 list = list->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6760 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6761 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, buf);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6762 break;
8175
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6763 case GAIM_PRIVACY_DENY_USERS:
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6764 list = account->deny;
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6765 at = 0;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6766 while (list) {
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6767 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
6768 list = list->next;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6769 }
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6770 aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, buf);
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6771 break;
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6772 default:
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6773 break;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6774 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6775 #else
8175
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6776 if (od->sess->ssi.received_data) {
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6777 switch (account->perm_deny) {
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6778 case GAIM_PRIVACY_ALLOW_ALL:
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6779 aim_ssi_setpermdeny(od->sess, 0x01, 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_BUDDYLIST:
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6782 aim_ssi_setpermdeny(od->sess, 0x05, 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_ALLOW_USERS:
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6785 aim_ssi_setpermdeny(od->sess, 0x03, 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_ALL:
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6788 aim_ssi_setpermdeny(od->sess, 0x02, 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 case GAIM_PRIVACY_DENY_USERS:
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6791 aim_ssi_setpermdeny(od->sess, 0x04, 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 default:
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6794 aim_ssi_setpermdeny(od->sess, 0x01, 0xffffffff);
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6795 break;
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6796 }
4e79974d452c [gaim-migrate @ 8889]
Mark Doliner <markdoliner@pidgin.im>
parents: 8170
diff changeset
6797 }
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6798 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6799 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6800
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6801 static void oscar_add_permit(GaimConnection *gc, const char *who) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6802 #ifdef NOSSI
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8092
diff changeset
6803 if (gc->account->perm_deny == 3)
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6804 oscar_set_permit_deny(gc);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6805 #else
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
6806 OscarData *od = (OscarData *)gc->proto_data;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6807 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
6808 if (od->sess->ssi.received_data)
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
6809 aim_ssi_addpermit(od->sess, who);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6810 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6811 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6812
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6813 static void oscar_add_deny(GaimConnection *gc, const char *who) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6814 #ifdef NOSSI
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8092
diff changeset
6815 if (gc->account->perm_deny == 4)
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6816 oscar_set_permit_deny(gc);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6817 #else
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
6818 OscarData *od = (OscarData *)gc->proto_data;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6819 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
6820 if (od->sess->ssi.received_data)
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
6821 aim_ssi_adddeny(od->sess, who);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6822 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6823 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6824
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6825 static void oscar_rem_permit(GaimConnection *gc, const char *who) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6826 #ifdef NOSSI
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8092
diff changeset
6827 if (gc->account->perm_deny == 3)
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6828 oscar_set_permit_deny(gc);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6829 #else
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
6830 OscarData *od = (OscarData *)gc->proto_data;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6831 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
6832 if (od->sess->ssi.received_data)
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
6833 aim_ssi_delpermit(od->sess, who);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6834 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6835 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6836
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
6837 static void oscar_rem_deny(GaimConnection *gc, const char *who) {
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6838 #ifdef NOSSI
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8092
diff changeset
6839 if (gc->account->perm_deny == 4)
4269
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6840 oscar_set_permit_deny(gc);
c716bd9eee3c [gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents: 4251
diff changeset
6841 #else
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
6842 OscarData *od = (OscarData *)gc->proto_data;
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
6843 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
6844 if (od->sess->ssi.received_data)
4889
9c81754db28e [gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents: 4870
diff changeset
6845 aim_ssi_deldeny(od->sess, who);
4230
b5393db78439 [gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents: 4212
diff changeset
6846 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6847 }
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 static GList *
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
6850 oscar_status_types(GaimAccount *account)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6851 {
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
6852 GList *status_types = NULL;
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
6853 GaimStatusType *type;
2501
5e1fa4926c93 [gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2432
diff changeset
6854
9973
e163f8e7e8a4 [gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents: 9972
diff changeset
6855 g_return_val_if_fail(account != NULL, NULL);
e163f8e7e8a4 [gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents: 9972
diff changeset
6856
10042
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6857 /* Oscar-common status types */
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6858 type = gaim_status_type_new_full(GAIM_STATUS_OFFLINE,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6859 OSCAR_STATUS_ID_OFFLINE,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6860 _("Offline"), FALSE, FALSE, FALSE);
9976
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
6861 status_types = g_list_append(status_types, type);
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
6862
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6863 type = gaim_status_type_new_full(GAIM_STATUS_ONLINE,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6864 OSCAR_STATUS_ID_ONLINE,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6865 _("Online"), FALSE, FALSE, FALSE);
9976
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
6866 status_types = g_list_append(status_types, type);
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
6867
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6868 type = gaim_status_type_new_full(GAIM_STATUS_AVAILABLE,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6869 OSCAR_STATUS_ID_AVAILABLE,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6870 _("Available"), TRUE, TRUE, FALSE);
9976
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
6871 status_types = g_list_append(status_types, type);
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
6872
10195
18379f7920fa [gaim-migrate @ 11310]
Mark Doliner <markdoliner@pidgin.im>
parents: 10157
diff changeset
6873 type = gaim_status_type_new_with_attrs(GAIM_STATUS_AWAY,
18379f7920fa [gaim-migrate @ 11310]
Mark Doliner <markdoliner@pidgin.im>
parents: 10157
diff changeset
6874 OSCAR_STATUS_ID_AWAY,
18379f7920fa [gaim-migrate @ 11310]
Mark Doliner <markdoliner@pidgin.im>
parents: 10157
diff changeset
6875 _("Away"), TRUE, TRUE, FALSE,
18379f7920fa [gaim-migrate @ 11310]
Mark Doliner <markdoliner@pidgin.im>
parents: 10157
diff changeset
6876 "message", _("Message"),
18379f7920fa [gaim-migrate @ 11310]
Mark Doliner <markdoliner@pidgin.im>
parents: 10157
diff changeset
6877 gaim_value_new(GAIM_TYPE_STRING), NULL);
10042
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 type = gaim_status_type_new_full(GAIM_STATUS_HIDDEN,
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6881 OSCAR_STATUS_ID_INVISIBLE,
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6882 _("Invisible"), TRUE, TRUE, TRUE);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6883 status_types = g_list_append(status_types, type);
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6884
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6885 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
6886 return status_types;
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6887
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
diff changeset
6888 /* ICQ-specific status types */
b9091ec2b708 [gaim-migrate @ 11001]
Dave West <kat@users.sourceforge.net>
parents: 10039
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_AVAILABLE,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6891 OSCAR_STATUS_ID_FREE4CHAT,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6892 _("Free For Chat"), TRUE, TRUE, FALSE);
9982
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
diff changeset
6893 status_types = g_list_append(status_types, type);
4f35c5d13c8c [gaim-migrate @ 10893]
Dave West <kat@users.sourceforge.net>
parents: 9976
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_UNAVAILABLE,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6896 OSCAR_STATUS_ID_OCCUPIED,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6897 _("Occupied"), 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_DND,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6902 _("Do Not Disturb"), 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);
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
6904
9991
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6905 type = gaim_status_type_new_full(GAIM_STATUS_EXTENDED_AWAY,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6906 OSCAR_STATUS_ID_NA,
a02e6b4e0959 [gaim-migrate @ 10904]
Dave West <kat@users.sourceforge.net>
parents: 9988
diff changeset
6907 _("Not Available"), TRUE, TRUE, FALSE);
9976
5fceb5de48b8 [gaim-migrate @ 10887]
Dave West <kat@users.sourceforge.net>
parents: 9975
diff changeset
6908 status_types = g_list_append(status_types, type);
9975
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
6909
ea6d503b89cb [gaim-migrate @ 10886]
Mark Doliner <markdoliner@pidgin.im>
parents: 9973
diff changeset
6910 return status_types;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6911 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6912
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6913 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
6914 GaimConnection *gc = data->gc;
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6915 OscarData *od = gc->proto_data;
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6916 GaimBuddy *b;
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6917 GaimGroup *g;
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 (!(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
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 if (!(g = gaim_find_buddys_group(b))) {
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6925 oscar_free_name_data(data);
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6926 return;
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6927 }
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6928
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6929 aim_ssi_editcomment(od->sess, g->name, data->name, text);
8341
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6930
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6931 if (!aim_sncmp(data->name, gc->account->username))
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6932 gaim_check_comment(od, text);
dc43b1acfc1a [gaim-migrate @ 9065]
Mark Doliner <markdoliner@pidgin.im>
parents: 8308
diff changeset
6933
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6934 oscar_free_name_data(data);
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6935 }
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6936
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6937 static void oscar_buddycb_edit_comment(GaimBlistNode *node, gpointer ignore) {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6938
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6939 GaimBuddy *buddy;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6940 GaimConnection *gc;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6941 OscarData *od;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6942 struct name_data *data;
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6943 GaimGroup *g;
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6944 char *comment;
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6945 gchar *comment_utf8;
9631
65565164149f [gaim-migrate @ 10475]
Jon Oberheide
parents: 9627
diff changeset
6946 gchar *title;
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6947
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6948 g_return_if_fail(GAIM_BLIST_NODE_IS_BUDDY(node));
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6949
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6950 buddy = (GaimBuddy *) node;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6951 gc = gaim_account_get_connection(buddy->account);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6952 od = gc->proto_data;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6953
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6954 data = g_new(struct name_data, 1);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6955
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6956 if (!(g = gaim_find_buddys_group(buddy)))
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6957 return;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6958 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
6959 comment_utf8 = comment ? gaim_utf8_try_convert(comment) : NULL;
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6960
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6961 data->gc = gc;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6962 data->name = g_strdup(buddy->name);
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6963 data->nick = NULL;
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6964
9631
65565164149f [gaim-migrate @ 10475]
Jon Oberheide
parents: 9627
diff changeset
6965 title = g_strdup_printf(_("Buddy Comment for %s"), data->name);
65565164149f [gaim-migrate @ 10475]
Jon Oberheide
parents: 9627
diff changeset
6966 gaim_request_input(gc, title, _("Buddy Comment:"), NULL,
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8670
diff changeset
6967 comment_utf8, TRUE, FALSE, NULL,
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6968 _("OK"), G_CALLBACK(oscar_ssi_editcomment),
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6969 _("Cancel"), G_CALLBACK(oscar_free_name_data),
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6970 data);
9631
65565164149f [gaim-migrate @ 10475]
Jon Oberheide
parents: 9627
diff changeset
6971 g_free(title);
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6972
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6973 free(comment);
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6974 g_free(comment_utf8);
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6975 }
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6976
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6977 static GList *oscar_buddy_menu(GaimBuddy *buddy) {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6978
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6979 GaimConnection *gc = gaim_account_get_connection(buddy->account);
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
6980 OscarData *od = gc->proto_data;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6981
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6982 GList *m = NULL;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6983 GaimBlistNodeAction *act;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6984
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6985 act = gaim_blist_node_action_new(_("Edit Buddy Comment"),
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6986 oscar_buddycb_edit_comment, NULL);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6987 m = g_list_append(m, act);
7172
cf6ed52de3c7 [gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents: 7166
diff changeset
6988
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6989 if (od->icq) {
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
6990 #if 0
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6991 act = gaim_blist_node_action_new(_("Get Status Msg"),
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6992 oscar_get_icqstatusmsg, NULL);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6993 m = g_list_append(m, act);
4624
8bf85f27e60c [gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents: 4617
diff changeset
6994 #endif
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
6995 } else {
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
6996 aim_userinfo_t *userinfo;
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6997 userinfo = aim_locate_finduserinfo(od->sess, buddy->name);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6998
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
6999 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
7000 GAIM_BUDDY_IS_ONLINE(buddy)) {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7001
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
7002 if (userinfo->capabilities & AIM_CAPS_DIRECTIM) {
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7003 act = gaim_blist_node_action_new(_("Direct IM"),
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7004 oscar_ask_direct_im, NULL);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7005 m = g_list_append(m, act);
5917
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
7006 }
9466
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9463
diff changeset
7007 #if 0
7011
00f405d9922b [gaim-migrate @ 7574]
Mark Doliner <markdoliner@pidgin.im>
parents: 6982
diff changeset
7008 if (userinfo->capabilities & AIM_CAPS_GETFILE) {
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7009 act = gaim_blist_node_action_new(_("Get File"),
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7010 oscar_ask_getfile, NULL);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7011 m = g_list_append(m, act);
5917
a79e79eca294 [gaim-migrate @ 6349]
Mark Doliner <markdoliner@pidgin.im>
parents: 5904
diff changeset
7012 }
4826
ce211ce6a336 [gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents: 4825
diff changeset
7013 #endif
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7014 }
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
7015 }
5197
ab4d919050d7 [gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents: 5167
diff changeset
7016
5131
ce6d77bc4102 [gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents: 5129
diff changeset
7017 if (od->sess->ssi.received_data) {
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7018 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
7019 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
7020 act = gaim_blist_node_action_new(_("Re-request Authorization"),
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7021 gaim_auth_sendrequest_menu, NULL);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7022 m = g_list_append(m, act);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7023 }
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4901
diff changeset
7024 }
10157
650fd69090cd [gaim-migrate @ 11237]
Mark Doliner <markdoliner@pidgin.im>
parents: 10152
diff changeset
7025
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7026 return m;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7027 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7028
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7029
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7030 static GList *oscar_blist_node_menu(GaimBlistNode *node) {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7031 if(GAIM_BLIST_NODE_IS_BUDDY(node)) {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7032 return oscar_buddy_menu((GaimBuddy *) node);
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7033 } else {
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7034 return NULL;
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7035 }
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7036 }
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7037
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9016
diff changeset
7038
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
7039 static void oscar_format_screenname(GaimConnection *gc, const char *nick) {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
7040 OscarData *od = gc->proto_data;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
7041 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
7042 if (!aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH)) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7043 od->setnick = TRUE;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7044 od->newsn = g_strdup(nick);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7045 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7046 } else {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7047 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
7048 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7049 } else {
5436
a0e0bacaa196 [gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents: 5435
diff changeset
7050 gaim_notify_error(gc, NULL, _("The new formatting is invalid."),
8152
f26c9406b4b3 [gaim-migrate @ 8864]
Mark Doliner <markdoliner@pidgin.im>
parents: 8151
diff changeset
7051 _("Screen name formatting can change only capitalization and whitespace."));
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7052 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7053 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7054
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7055 static void oscar_show_format_screenname(GaimPluginAction *action)
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7056 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7057 GaimConnection *gc = (GaimConnection *) action->context;
8152
f26c9406b4b3 [gaim-migrate @ 8864]
Mark Doliner <markdoliner@pidgin.im>
parents: 8151
diff changeset
7058 gaim_request_input(gc, NULL, _("New screen name formatting:"), NULL,
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8670
diff changeset
7059 gaim_connection_get_display_name(gc), FALSE, FALSE, NULL,
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
7060 _("OK"), G_CALLBACK(oscar_format_screenname),
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
7061 _("Cancel"), NULL,
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
7062 gc);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7063 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7064
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7065 static void oscar_confirm_account(GaimPluginAction *action)
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7066 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7067 GaimConnection *gc = (GaimConnection *) action->context;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
7068 OscarData *od = gc->proto_data;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7069 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
7070
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7071 if (conn) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7072 aim_admin_reqconfirm(od->sess, conn);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7073 } else {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7074 od->conf = TRUE;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7075 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7076 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7077 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7078
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7079 static void oscar_show_email(GaimPluginAction *action)
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7080 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7081 GaimConnection *gc = (GaimConnection *) action->context;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
7082 OscarData *od = gc->proto_data;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7083 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
7084
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7085 if (conn) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7086 aim_admin_getinfo(od->sess, conn, 0x11);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7087 } else {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7088 od->reqemail = TRUE;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7089 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7090 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7091 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7092
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
7093 static void oscar_change_email(GaimConnection *gc, const char *email)
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7094 {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
7095 OscarData *od = gc->proto_data;
2768
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7096 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
7097
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7098 if (conn) {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7099 aim_admin_setemail(od->sess, conn, email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7100 } else {
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7101 od->setemail = TRUE;
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7102 od->email = g_strdup(email);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7103 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7104 }
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7105 }
908aa476ee73 [gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2762
diff changeset
7106
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7107 static void oscar_show_change_email(GaimPluginAction *action)
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7108 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7109 GaimConnection *gc = (GaimConnection *) action->context;
6035
b245be9cbe3b [gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents: 6029
diff changeset
7110 gaim_request_input(gc, NULL, _("Change Address To:"), NULL, NULL,
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8670
diff changeset
7111 FALSE, FALSE, NULL,
5493
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
7112 _("OK"), G_CALLBACK(oscar_change_email),
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
7113 _("Cancel"), NULL,
f30de3b116ea [gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
7114 gc);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7115 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7116
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7117 static void oscar_show_awaitingauth(GaimPluginAction *action)
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7118 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7119 GaimConnection *gc = (GaimConnection *) action->context;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
7120 OscarData *od = gc->proto_data;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7121 gchar *nombre, *text, *tmp;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7122 GaimBlistNode *gnode, *cnode, *bnode;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7123 int num=0;
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7124
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
7125 text = g_strdup("");
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7126
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
7127 for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7128 GaimGroup *group = (GaimGroup *)gnode;
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
7129 if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
7130 continue;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7131 for (cnode = gnode->child; cnode; cnode = cnode->next) {
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7132 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode))
4785
9af09a0b5ac1 [gaim-migrate @ 5105]
Nathan Walp <nwalp@pidgin.im>
parents: 4783
diff changeset
7133 continue;
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7134 for (bnode = cnode->child; bnode; bnode = bnode->next) {
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7135 GaimBuddy *buddy = (GaimBuddy *)bnode;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7136 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7137 continue;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7138 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
7139 if (gaim_buddy_get_alias_only(buddy))
fe99fcea5c1c [gaim-migrate @ 10464]
Christopher O'Brien <siege@pidgin.im>
parents: 9595
diff changeset
7140 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
7141 else
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7142 nombre = g_strdup_printf(" %s", buddy->name);
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
7143 tmp = g_strdup_printf("%s%s<br>", text, nombre);
6695
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7144 g_free(text);
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7145 text = tmp;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7146 g_free(nombre);
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7147 num++;
2a63688f0d6d [gaim-migrate @ 7221]
Nathan Walp <nwalp@pidgin.im>
parents: 6640
diff changeset
7148 }
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7149 }
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
7150 }
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7151 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7152
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7153 if (!num) {
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7154 g_free(text);
6873
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
7155 text = g_strdup(_("<i>you are not waiting for authorization</i>"));
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
7156 }
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
7157
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
7158 gaim_notify_formatted(gc, NULL, _("You are awaiting authorization from "
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
7159 "the following buddies"), _("You can re-request "
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
7160 "authorization from these buddies by "
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
7161 "right-clicking on them and selecting "
70cc4cd04196 [gaim-migrate @ 7419]
Mark Doliner <markdoliner@pidgin.im>
parents: 6871
diff changeset
7162 "\"Re-request Authorization.\""), text, NULL, NULL);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7163 g_free(text);
2979
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
7164 }
ea91012810b3 [gaim-migrate @ 2992]
Rob Flynn <gaim@robflynn.com>
parents: 2947
diff changeset
7165
7080
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7166 static void search_by_email_cb(GaimConnection *gc, const char *email)
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7167 {
8950
1b90ece5fb4f [gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents: 8907
diff changeset
7168 OscarData *od = (OscarData *)gc->proto_data;
1b90ece5fb4f [gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents: 8907
diff changeset
7169
1b90ece5fb4f [gaim-migrate @ 9722]
Mark Doliner <markdoliner@pidgin.im>
parents: 8907
diff changeset
7170 aim_search_address(od->sess, od->conn, email);
7080
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7171 }
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7172
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7173 static void oscar_show_find_email(GaimPluginAction *action)
7080
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7174 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7175 GaimConnection *gc = (GaimConnection *) action->context;
7080
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7176 gaim_request_input(gc, _("Find Buddy by E-mail"),
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7177 _("Search for a buddy by e-mail address"),
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7178 _("Type the e-mail address of the buddy you are "
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7179 "searching for."),
8697
c5e51aef2026 [gaim-migrate @ 9450]
Jon Oberheide
parents: 8670
diff changeset
7180 NULL, FALSE, FALSE, NULL,
7080
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7181 _("Search"), G_CALLBACK(search_by_email_cb),
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7182 _("Cancel"), NULL, gc);
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7183 }
a443c1992270 [gaim-migrate @ 7645]
Christian Hammond <chipx86@chipx86.com>
parents: 7067
diff changeset
7184
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7185 static void oscar_show_set_info(GaimPluginAction *action)
7067
c57295414efa [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
7186 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7187 GaimConnection *gc = (GaimConnection *) action->context;
7067
c57295414efa [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
7188 gaim_account_request_change_user_info(gaim_connection_get_account(gc));
c57295414efa [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
7189 }
c57295414efa [gaim-migrate @ 7631]
Christian Hammond <chipx86@chipx86.com>
parents: 7063
diff changeset
7190
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7191 static void oscar_show_set_info_icqurl(GaimPluginAction *action)
8576
2bbdbfa1bb83 [gaim-migrate @ 9325]
Ambrose Li <ambrose.li@gmail.com>
parents: 8571
diff changeset
7192 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7193 GaimConnection *gc = (GaimConnection *) action->context;
9809
11fbd5946b13 [gaim-migrate @ 10677]
<oannu@users.sourceforge.net>
parents: 9807
diff changeset
7194 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
7195 }
2bbdbfa1bb83 [gaim-migrate @ 9325]
Ambrose Li <ambrose.li@gmail.com>
parents: 8571
diff changeset
7196
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7197 static void oscar_change_pass(GaimPluginAction *action)
7063
4bfe512a4b8c [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
7198 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7199 GaimConnection *gc = (GaimConnection *) action->context;
7063
4bfe512a4b8c [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
7200 gaim_account_request_change_password(gaim_connection_get_account(gc));
4bfe512a4b8c [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
7201 }
4bfe512a4b8c [gaim-migrate @ 7627]
Christian Hammond <chipx86@chipx86.com>
parents: 7060
diff changeset
7202
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7203 static void oscar_show_chpassurl(GaimPluginAction *action)
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7204 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7205 GaimConnection *gc = (GaimConnection *) action->context;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
7206 OscarData *od = gc->proto_data;
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
7207 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
7208 gaim_notify_uri(gc, substituted);
5517
1d7b99ac846c [gaim-migrate @ 5916]
Mark Doliner <markdoliner@pidgin.im>
parents: 5498
diff changeset
7209 g_free(substituted);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7210 }
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7211
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7212 static void oscar_show_imforwardingurl(GaimPluginAction *action)
7026
7828abff32da [gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents: 7023
diff changeset
7213 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7214 GaimConnection *gc = (GaimConnection *) action->context;
7026
7828abff32da [gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents: 7023
diff changeset
7215 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
7216 }
7828abff32da [gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents: 7023
diff changeset
7217
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7218 static void oscar_set_icon(GaimConnection *gc, const char *iconfile)
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7219 {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
7220 OscarData *od = gc->proto_data;
5844
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
7221 aim_session_t *sess = od->sess;
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7222 FILE *file;
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7223 struct stat st;
5844
a0f8b06669e7 [gaim-migrate @ 6275]
Mark Doliner <markdoliner@pidgin.im>
parents: 5842
diff changeset
7224
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
7225 if (iconfile == NULL) {
8363
d46380322c37 [gaim-migrate @ 9088]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 8361
diff changeset
7226 aim_ssi_delicon(od->sess);
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
7227 } else if (!stat(iconfile, &st)) {
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7228 char *buf = g_malloc(st.st_size);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7229 file = fopen(iconfile, "rb");
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7230 if (file) {
6052
61348856ae28 [gaim-migrate @ 6502]
Mark Doliner <markdoliner@pidgin.im>
parents: 6051
diff changeset
7231 md5_state_t *state;
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
7232 char md5[16];
9532
32470c5a1d58 [gaim-migrate @ 10359]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 9481
diff changeset
7233 /* XXX - Use g_file_get_contents()? */
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7234 int len = fread(buf, 1, st.st_size, file);
6039
0d9378194f65 [gaim-migrate @ 6489]
Mark Doliner <markdoliner@pidgin.im>
parents: 6037
diff changeset
7235 fclose(file);
6052
61348856ae28 [gaim-migrate @ 6502]
Mark Doliner <markdoliner@pidgin.im>
parents: 6051
diff changeset
7236 state = g_malloc(sizeof(md5_state_t));
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7237 md5_init(state);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7238 md5_append(state, buf, len);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7239 md5_finish(state, md5);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7240 g_free(state);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7241 aim_ssi_seticon(sess, md5, 16);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7242 } else
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
7243 gaim_debug_error("oscar",
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7244 "Can't open buddy icon file!\n");
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7245 g_free(buf);
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7246 } else
8660
db1625f0f9d1 [gaim-migrate @ 9412]
Mark Doliner <markdoliner@pidgin.im>
parents: 8623
diff changeset
7247 gaim_debug_error("oscar",
5842
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7248 "Can't stat buddy icon file!\n");
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7249 }
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7250
8c35097a15b5 [gaim-migrate @ 6273]
Sean Egan <seanegan@pidgin.im>
parents: 5837
diff changeset
7251
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7252 static GList *oscar_actions(GaimPlugin *plugin, gpointer context)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7253 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7254 GaimConnection *gc = (GaimConnection *) context;
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
7255 OscarData *od = gc->proto_data;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7256 GList *m = NULL;
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7257 GaimPluginAction *act;
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7258
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7259 act = gaim_plugin_action_new(_("Set User Info..."),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7260 oscar_show_set_info);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7261 m = g_list_append(m, act);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7262
8576
2bbdbfa1bb83 [gaim-migrate @ 9325]
Ambrose Li <ambrose.li@gmail.com>
parents: 8571
diff changeset
7263 if (od->icq) {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7264 act = gaim_plugin_action_new(_("Set User Info (URL)..."),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7265 oscar_show_set_info_icqurl);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7266 m = g_list_append(m, act);
8576
2bbdbfa1bb83 [gaim-migrate @ 9325]
Ambrose Li <ambrose.li@gmail.com>
parents: 8571
diff changeset
7267 }
2bbdbfa1bb83 [gaim-migrate @ 9325]
Ambrose Li <ambrose.li@gmail.com>
parents: 8571
diff changeset
7268
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7269 act = gaim_plugin_action_new(_("Change Password..."),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7270 oscar_change_pass);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7271 m = g_list_append(m, act);
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7272
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7273 if (od->sess->authinfo->chpassurl) {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7274 act = gaim_plugin_action_new(_("Change Password (URL)"),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7275 oscar_show_chpassurl);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7276 m = g_list_append(m, act);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7277
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7278 act = gaim_plugin_action_new(_("Configure IM Forwarding (URL)"),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7279 oscar_show_imforwardingurl);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7280 m = g_list_append(m, act);
7026
7828abff32da [gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents: 7023
diff changeset
7281 }
7828abff32da [gaim-migrate @ 7589]
Mark Doliner <markdoliner@pidgin.im>
parents: 7023
diff changeset
7282
5238
b2c65d7392e0 [gaim-migrate @ 5608]
Mark Doliner <markdoliner@pidgin.im>
parents: 5234
diff changeset
7283 if (!od->icq) {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7284 /* AIM actions */
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7285 m = g_list_append(m, NULL);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7286
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7287 act = gaim_plugin_action_new(_("Format Screen Name..."),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7288 oscar_show_format_screenname);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7289 m = g_list_append(m, act);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7290
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7291 act = gaim_plugin_action_new(_("Confirm Account"),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7292 oscar_confirm_account);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7293 m = g_list_append(m, act);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7294
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7295 act = gaim_plugin_action_new(_("Display Currently Registered Address"),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7296 oscar_show_email);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7297 m = g_list_append(m, act);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7298
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7299 act = gaim_plugin_action_new(_("Change Currently Registered Address..."),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7300 oscar_show_change_email);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7301 m = g_list_append(m, act);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7302 }
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7303
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7304 m = g_list_append(m, NULL);
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7305
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7306 act = gaim_plugin_action_new(_("Show Buddies Awaiting Authorization"),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7307 oscar_show_awaitingauth);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7308 m = g_list_append(m, act);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7309
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7310 m = g_list_append(m, NULL);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7311
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 Email..."),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7313 oscar_show_find_email);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7314 m = g_list_append(m, act);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4317
diff changeset
7315
8591
ae42ad1cd127 [gaim-migrate @ 9342]
Mark Doliner <markdoliner@pidgin.im>
parents: 8590
diff changeset
7316 #if 0
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7317 act = gaim_plugin_action_new(_("Search for Buddy by Information"),
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7318 show_find_info);
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7319 m = g_list_append(m, act);
8591
ae42ad1cd127 [gaim-migrate @ 9342]
Mark Doliner <markdoliner@pidgin.im>
parents: 8590
diff changeset
7320 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7321
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7322 return m;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7323 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7324
5575
bcc7e97af7eb [gaim-migrate @ 5979]
Sean Egan <seanegan@pidgin.im>
parents: 5556
diff changeset
7325 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
7326 {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
7327 OscarData *od = gc->proto_data;
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7328
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7329 if (od->icq) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7330 aim_icq_changepasswd(od->sess, new);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7331 } else {
4617
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7332 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
7333 if (conn) {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7334 aim_admin_changepasswd(od->sess, conn, new, old);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7335 } else {
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7336 od->chpass = TRUE;
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7337 od->oldp = g_strdup(old);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7338 od->newp = g_strdup(new);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7339 aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH);
35d860860593 [gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents: 4608
diff changeset
7340 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7341 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7342 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7343
6059
9934c862ca14 [gaim-migrate @ 6509]
John Silvestri <john.silvestri@gmail.com>
parents: 6053
diff changeset
7344 static void oscar_convo_closed(GaimConnection *gc, const char *who)
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
7345 {
7283
aa76f7c93746 [gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents: 7282
diff changeset
7346 OscarData *od = gc->proto_data;
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
7347 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
7348
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
7349 if (!dim)
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
7350 return;
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
7351
8971
a0adb943cbb4 [gaim-migrate @ 9745]
Tim Ringenbach <marv@pidgin.im>
parents: 8962
diff changeset
7352 oscar_direct_im_destroy(od, dim);
2246
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
7353 }
8ade8b7421af [gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2235
diff changeset
7354
9935
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7355 static void
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7356 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
7357 {
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7358 GaimConnection *gc = data;
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7359 OscarData *od = gc->proto_data;
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7360 aim_session_t *sess = od->sess;
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7361 fu32_t presence;
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7362
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7363 presence = aim_ssi_getpresence(sess->ssi.local);
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7364
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7365 if (value) {
9992
d733f96bfc7b [gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents: 9991
diff changeset
7366 /* 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
7367 /* Stu thinks it's the second one. */
d733f96bfc7b [gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents: 9991
diff changeset
7368 /* presence |= 0x00400000; */
9971
8291bafb0025 [gaim-migrate @ 10882]
Daniel Atallah <datallah@pidgin.im>
parents: 9948
diff changeset
7369 presence &= ~0x00020000;
9935
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7370 aim_ssi_setpresence(sess, presence);
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7371 } else {
9992
d733f96bfc7b [gaim-migrate @ 10905]
Mark Doliner <markdoliner@pidgin.im>
parents: 9991
diff changeset
7372 /* presence &= ~0x00400000; */
9971
8291bafb0025 [gaim-migrate @ 10882]
Daniel Atallah <datallah@pidgin.im>
parents: 9948
diff changeset
7373 presence |= 0x00020000;
9935
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7374 aim_ssi_setpresence(sess, presence);
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7375 }
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7376 }
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7377
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7378 static GaimPluginPrefFrame *
9936
7cfb397cc0d9 [gaim-migrate @ 10828]
Mark Doliner <markdoliner@pidgin.im>
parents: 9935
diff changeset
7379 get_plugin_pref_frame(GaimPlugin *plugin)
7cfb397cc0d9 [gaim-migrate @ 10828]
Mark Doliner <markdoliner@pidgin.im>
parents: 9935
diff changeset
7380 {
9935
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7381 GaimPluginPrefFrame *frame;
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7382 GaimPluginPref *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 frame = gaim_plugin_pref_frame_new();
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7385
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7386 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
7387 gaim_plugin_pref_frame_add(frame, ppref);
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 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
7390 gaim_plugin_pref_frame_add(frame, ppref);
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7391
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7392 return frame;
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7393 }
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7394
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7395 static GaimPluginProtocolInfo prpl_info =
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7396 {
9308
4ea759d72d37 [gaim-migrate @ 10116]
Sean Egan <seanegan@pidgin.im>
parents: 9295
diff changeset
7397 OPT_PROTO_MAIL_CHECK | OPT_PROTO_IM_IMAGE,
9475
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7398 NULL, /* user_splits */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7399 NULL, /* protocol_options */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7400 {"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
7401 oscar_list_icon, /* list_icon */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7402 oscar_list_emblems, /* list_emblems */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7403 oscar_status_text, /* status_text */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7404 oscar_tooltip_text, /* tooltip_text */
9973
e163f8e7e8a4 [gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents: 9972
diff changeset
7405 oscar_status_types, /* status_types */
9475
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7406 oscar_blist_node_menu, /* blist_node_menu */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7407 oscar_chat_info, /* chat_info */
9754
3a17eee239b2 [gaim-migrate @ 10621]
Nathan Fredrickson <nathan@silverorange.com>
parents: 9753
diff changeset
7408 oscar_chat_info_defaults, /* chat_info_defaults */
9475
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7409 oscar_login, /* login */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7410 oscar_close, /* close */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7411 oscar_send_im, /* send_im */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7412 oscar_set_info, /* set_info */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7413 oscar_send_typing, /* send_typing */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7414 oscar_get_info, /* get_info */
9973
e163f8e7e8a4 [gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents: 9972
diff changeset
7415 oscar_set_status, /* set_status */
9475
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7416 oscar_set_idle, /* set_idle */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7417 oscar_change_passwd, /* change_passwd */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7418 oscar_add_buddy, /* add_buddy */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7419 oscar_add_buddies, /* add_buddies */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7420 oscar_remove_buddy, /* remove_buddy */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7421 oscar_remove_buddies, /* remove_buddies */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7422 oscar_add_permit, /* add_permit */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7423 oscar_add_deny, /* add_deny */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7424 oscar_rem_permit, /* rem_permit */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7425 oscar_rem_deny, /* rem_deny */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7426 oscar_set_permit_deny, /* set_permit_deny */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7427 oscar_warn, /* warn */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7428 oscar_join_chat, /* join_chat */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7429 NULL, /* reject_chat */
9973
e163f8e7e8a4 [gaim-migrate @ 10884]
Mark Doliner <markdoliner@pidgin.im>
parents: 9972
diff changeset
7430 oscar_get_chat_name, /* get_chat_name */
9475
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7431 oscar_chat_invite, /* chat_invite */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7432 oscar_chat_leave, /* chat_leave */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7433 NULL, /* chat_whisper */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7434 oscar_send_chat, /* chat_send */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7435 oscar_keepalive, /* keepalive */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7436 NULL, /* register_user */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7437 NULL, /* get_cb_info */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7438 NULL, /* get_cb_away */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7439 #ifndef NOSSI
9475
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7440 oscar_alias_buddy, /* alias_buddy */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7441 oscar_move_buddy, /* group_buddy */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7442 oscar_rename_group, /* rename_group */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7443 #else
9475
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7444 NULL, /* alias_buddy */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7445 NULL, /* group_buddy */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7446 NULL, /* rename_group */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7447 #endif
9475
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7448 NULL, /* buddy_free */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7449 oscar_convo_closed, /* convo_closed */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7450 NULL, /* normalize */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7451 oscar_set_icon, /* set_buddy_icon */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7452 NULL, /* remove_group */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7453 NULL, /* get_cb_real_name */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7454 NULL, /* set_chat_topic */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7455 NULL, /* find_blist_chat */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7456 NULL, /* roomlist_get_list */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7457 NULL, /* roomlist_cancel */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7458 NULL, /* roomlist_expand_category */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7459 oscar_can_receive_file, /* can_receive_file */
8c8d4ac992a6 [gaim-migrate @ 10300]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9466
diff changeset
7460 oscar_send_file /* send_file */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7461 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7462
9935
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7463 static GaimPluginUiInfo prefs_info = {
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7464 get_plugin_pref_frame
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7465 };
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7466
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7467 static GaimPluginInfo info =
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7468 {
9943
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9942
diff changeset
7469 GAIM_PLUGIN_MAGIC,
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9942
diff changeset
7470 GAIM_MAJOR_VERSION,
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9942
diff changeset
7471 GAIM_MINOR_VERSION,
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7472 GAIM_PLUGIN_PROTOCOL, /**< type */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7473 NULL, /**< ui_requirement */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7474 0, /**< flags */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7475 NULL, /**< dependencies */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7476 GAIM_PRIORITY_DEFAULT, /**< priority */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7477
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7478 "prpl-oscar", /**< id */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7479 "AIM/ICQ", /**< name */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7480 VERSION, /**< version */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7481 /** summary */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7482 N_("AIM/ICQ Protocol Plugin"),
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7483 /** description */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7484 N_("AIM/ICQ Protocol Plugin"),
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7485 NULL, /**< author */
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6350
diff changeset
7486 GAIM_WEBSITE, /**< homepage */
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7487
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7488 NULL, /**< load */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7489 NULL, /**< unload */
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7490 NULL, /**< destroy */
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 NULL, /**< ui_info */
8993
41f67bceab41 [gaim-migrate @ 9768]
Luke Schierer <lschiere@pidgin.im>
parents: 8985
diff changeset
7493 &prpl_info, /**< extra_info */
9935
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7494 &prefs_info, /**< prefs_info */
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8995
diff changeset
7495 oscar_actions
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7496 };
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7497
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7498 static void
5920
963bfdefee02 [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5917
diff changeset
7499 init_plugin(GaimPlugin *plugin)
5205
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7500 {
5638
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
7501 GaimAccountOption *option;
53e752c88ea1 [gaim-migrate @ 6047]
Christian Hammond <chipx86@chipx86.com>
parents: 5631
diff changeset
7502
9830
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
7503 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
7504 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
7505
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
7506 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
7507 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
7508
a4c47fa6b462 [gaim-migrate @ 10701]
Mark Doliner <markdoliner@pidgin.im>
parents: 9826
diff changeset
7509 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
7510 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
7511
242b8aa81328 [gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents: 5197
diff changeset
7512 my_protocol = plugin;
9935
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7513
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7514 gaim_prefs_add_none("/plugins/prpl/oscar");
45473da3a39b [gaim-migrate @ 10827]
Mark Doliner <markdoliner@pidgin.im>
parents: 9933
diff changeset
7515 gaim_prefs_add_bool("/plugins/prpl/oscar/recent_buddies", FALSE);
9942
6cba898c9db1 [gaim-migrate @ 10834]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9936
diff changeset
7516 gaim_prefs_add_bool("/plugins/prpl/oscar/show_idle", FALSE);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7517 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7518
5920
963bfdefee02 [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5917
diff changeset
7519 GAIM_INIT_PLUGIN(oscar, init_plugin, info);

mercurial