Sun, 01 Jun 2003 06:02:03 +0000
[gaim-migrate @ 6038]
i'm tired, so i'm committing what i've got
kingant will do a better job with what i hacked into oscar to make it work ;-)
| 2086 | 1 | /* |
| 2 | * gaim | |
| 3 | * | |
| 4 | * Some code copyright (C) 1998-1999, Mark Spencer <markster@marko.net> | |
| 5 | * libfaim code copyright 1998, 1999 Adam Fritzler <afritz@auk.cx> | |
| 6 | * | |
| 7 | * This program is free software; you can redistribute it and/or modify | |
| 8 | * it under the terms of the GNU General Public License as published by | |
| 9 | * the Free Software Foundation; either version 2 of the License, or | |
| 10 | * (at your option) any later version. | |
| 11 | * | |
| 12 | * This program is distributed in the hope that it will be useful, | |
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 15 | * GNU General Public License for more details. | |
| 16 | * | |
| 17 | * You should have received a copy of the GNU General Public License | |
| 18 | * along with this program; if not, write to the Free Software | |
| 19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 20 | * | |
| 21 | */ | |
| 22 | ||
| 23 | #ifdef HAVE_CONFIG_H | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
24 | #include <config.h> |
| 2086 | 25 | #endif |
| 26 | ||
| 3664 | 27 | #include <sys/types.h> |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
28 | /* this must happen before sys/socket.h or freebsd won't compile */ |
| 3664 | 29 | |
| 3630 | 30 | #ifndef _WIN32 |
| 2086 | 31 | #include <netdb.h> |
| 32 | #include <netinet/in.h> | |
| 33 | #include <arpa/inet.h> | |
| 3630 | 34 | #include <sys/socket.h> |
| 35 | #include <unistd.h> | |
| 36 | #endif | |
| 37 | ||
| 38 | #include <errno.h> | |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
39 | #include <ctype.h> |
| 2086 | 40 | #include <string.h> |
| 41 | #include <stdlib.h> | |
| 42 | #include <stdio.h> | |
| 43 | #include <time.h> | |
| 44 | #include <sys/stat.h> | |
| 3630 | 45 | #include <signal.h> |
| 46 | ||
| 4608 | 47 | #include "gaim.h" |
| 2086 | 48 | #include "multi.h" |
| 49 | #include "prpl.h" | |
|
4373
fb2ae2f5edd3
[gaim-migrate @ 4639]
Herman Bloggs <herman@bluedigits.com>
parents:
4366
diff
changeset
|
50 | #include "core.h" |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
51 | #include "proxy.h" |
| 2086 | 52 | #include "aim.h" |
| 53 | ||
| 3630 | 54 | #ifdef _WIN32 |
| 55 | #include "win32dep.h" | |
| 56 | #endif | |
| 57 | ||
| 2086 | 58 | /* constants to identify proto_opts */ |
| 59 | #define USEROPT_AUTH 0 | |
| 60 | #define USEROPT_AUTHPORT 1 | |
| 61 | ||
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
62 | #define UC_AOL 0x02 |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
63 | #define UC_ADMIN 0x04 |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
64 | #define UC_UNCONFIRMED 0x08 |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
65 | #define UC_NORMAL 0x10 |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
66 | #define UC_AB 0x20 |
|
3079
e55c9a9cc4fc
[gaim-migrate @ 3093]
Mark Doliner <markdoliner@pidgin.im>
parents:
3074
diff
changeset
|
67 | #define UC_WIRELESS 0x40 |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
68 | |
| 2086 | 69 | #define AIMHASHDATA "http://gaim.sourceforge.net/aim_data.php3" |
| 70 | ||
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
71 | static GaimPlugin *my_protocol = NULL; |
|
4249
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4246
diff
changeset
|
72 | |
|
4811
ce0da6668339
[gaim-migrate @ 5131]
Mark Doliner <markdoliner@pidgin.im>
parents:
4807
diff
changeset
|
73 | static int caps_aim = AIM_CAPS_CHAT | AIM_CAPS_BUDDYICON | AIM_CAPS_IMIMAGE | AIM_CAPS_SENDFILE | AIM_CAPS_INTEROPERATE; |
|
ce0da6668339
[gaim-migrate @ 5131]
Mark Doliner <markdoliner@pidgin.im>
parents:
4807
diff
changeset
|
74 | static int caps_icq = AIM_CAPS_BUDDYICON | AIM_CAPS_IMIMAGE | AIM_CAPS_SENDFILE | AIM_CAPS_ICQUTF8 | AIM_CAPS_INTEROPERATE; |
|
3458
6140a920776b
[gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents:
3456
diff
changeset
|
75 | |
|
4665
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
76 | static fu8_t features_aim[] = {0x01, 0x01, 0x01, 0x02}; |
|
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
77 | static fu8_t features_icq[] = {0x01, 0x06}; |
| 2086 | 78 | |
| 79 | struct oscar_data { | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
80 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
81 | aim_conn_t *conn; |
| 2086 | 82 | |
| 83 | guint cnpa; | |
| 84 | guint paspa; | |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
85 | guint emlpa; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
86 | guint icopa; |
| 2086 | 87 | |
| 4823 | 88 | gboolean iconconnecting; |
| 89 | ||
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
90 | GSList *create_rooms; |
| 2086 | 91 | |
| 92 | gboolean conf; | |
| 93 | gboolean reqemail; | |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
94 | gboolean setemail; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
95 | char *email; |
| 2979 | 96 | gboolean setnick; |
| 97 | char *newsn; | |
| 2086 | 98 | gboolean chpass; |
| 99 | char *oldp; | |
| 100 | char *newp; | |
| 101 | ||
| 102 | GSList *oscar_chats; | |
| 103 | GSList *direct_ims; | |
| 3630 | 104 | GSList *file_transfers; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
105 | GHashTable *buddyinfo; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
106 | GSList *requesticon; |
| 2086 | 107 | |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
108 | gboolean killme; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
109 | gboolean icq; |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
110 | GSList *evilhack; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
111 | guint icontimer; |
| 2993 | 112 | |
| 113 | struct { | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
114 | guint maxwatchers; /* max users who can watch you */ |
| 2993 | 115 | guint maxbuddies; /* max users you can watch */ |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
116 | guint maxgroups; /* max groups in server list */ |
| 2993 | 117 | guint maxpermits; /* max users on permit list */ |
| 118 | guint maxdenies; /* max users on deny list */ | |
| 119 | guint maxsiglen; /* max size (bytes) of profile */ | |
| 120 | guint maxawaymsglen; /* max size (bytes) of posted away message */ | |
| 121 | } rights; | |
| 2086 | 122 | }; |
| 123 | ||
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
124 | struct create_room { |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
125 | char *name; |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
126 | int exchange; |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
127 | }; |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
128 | |
| 2086 | 129 | struct chat_connection { |
| 130 | char *name; | |
| 131 | char *show; /* AOL did something funny to us */ | |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
132 | fu16_t exchange; |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
133 | fu16_t instance; |
| 2086 | 134 | 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
|
135 | aim_conn_t *conn; |
| 2086 | 136 | int inpa; |
| 137 | int id; | |
| 5575 | 138 | GaimConnection *gc; /* i hate this. */ |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
139 | struct gaim_conversation *cnv; /* bah. */ |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
140 | int maxlen; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
141 | int maxvis; |
| 2086 | 142 | }; |
| 143 | ||
| 144 | struct direct_im { | |
| 5575 | 145 | GaimConnection *gc; |
| 2086 | 146 | char name[80]; |
| 147 | int watcher; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
148 | aim_conn_t *conn; |
| 3008 | 149 | gboolean connected; |
| 2086 | 150 | }; |
| 151 | ||
| 152 | struct ask_direct { | |
| 5575 | 153 | GaimConnection *gc; |
| 2086 | 154 | char *sn; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
155 | char ip[64]; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
156 | fu8_t cookie[8]; |
| 2086 | 157 | }; |
| 158 | ||
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
159 | /* Various PRPL-specific buddy info that we want to keep track of */ |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
160 | struct buddyinfo { |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
161 | time_t signon; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
162 | int caps; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
163 | gboolean typingnot; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
164 | |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
165 | unsigned long ico_len; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
166 | unsigned long ico_csum; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
167 | time_t ico_time; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
168 | gboolean ico_need; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
169 | |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
170 | unsigned long ico_me_len; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
171 | unsigned long ico_me_csum; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
172 | time_t ico_me_time; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
173 | gboolean ico_informed; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
174 | |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
175 | fu16_t iconcsumlen; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
176 | fu8_t iconcsum[30]; |
| 2086 | 177 | }; |
| 178 | ||
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
179 | struct name_data { |
| 5575 | 180 | GaimConnection *gc; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
181 | gchar *name; |
| 3453 | 182 | gchar *nick; |
| 3141 | 183 | }; |
| 184 | ||
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
185 | static char *msgerrreason[] = { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
186 | N_("Invalid error"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
187 | N_("Invalid SNAC"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
188 | N_("Rate to host"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
189 | N_("Rate to client"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
190 | N_("Not logged in"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
191 | N_("Service unavailable"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
192 | N_("Service not defined"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
193 | N_("Obsolete SNAC"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
194 | N_("Not supported by host"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
195 | N_("Not supported by client"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
196 | N_("Refused by client"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
197 | N_("Reply too big"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
198 | N_("Responses lost"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
199 | N_("Request denied"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
200 | N_("Busted SNAC payload"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
201 | N_("Insufficient rights"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
202 | N_("In local permit/deny"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
203 | N_("Too evil (sender)"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
204 | N_("Too evil (receiver)"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
205 | N_("User temporarily unavailable"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
206 | N_("No match"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
207 | N_("List overflow"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
208 | N_("Request ambiguous"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
209 | N_("Queue full"), |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
210 | N_("Not while on AOL") |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
211 | }; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
212 | static int msgerrreasonlen = 25; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
213 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
214 | /* All the libfaim->gaim callback functions */ |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
215 | 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
|
216 | static int gaim_parse_login (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
217 | static int gaim_handle_redirect (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
218 | static int gaim_info_change (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
219 | static int gaim_account_confirm (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
220 | static int gaim_parse_oncoming (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
221 | static int gaim_parse_offgoing (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
222 | 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
|
223 | static int gaim_parse_misses (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
224 | static int gaim_parse_clientauto (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
225 | static int gaim_parse_user_info (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
226 | static int gaim_parse_motd (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
227 | static int gaim_chatnav_info (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
228 | static int gaim_chat_join (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
229 | static int gaim_chat_leave (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
230 | static int gaim_chat_info_update (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
231 | static int gaim_chat_incoming_msg(aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
232 | static int gaim_email_parseupdate(aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
233 | static int gaim_icon_error (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
234 | static int gaim_icon_parseicon (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
235 | static int gaim_parse_msgack (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
236 | static int gaim_parse_ratechange (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
237 | static int gaim_parse_evilnotify (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
238 | static int gaim_parse_searcherror(aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
239 | static int gaim_parse_searchreply(aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
240 | static int gaim_bosrights (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
241 | static int gaim_connerr (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
242 | static int conninitdone_admin (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
243 | static int conninitdone_bos (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
244 | static int conninitdone_chatnav (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
245 | static int conninitdone_chat (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
246 | static int conninitdone_email (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
247 | static int conninitdone_icon (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
248 | static int gaim_parse_msgerr (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
249 | static int gaim_parse_mtn (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
250 | static int gaim_parse_locaterights(aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
251 | static int gaim_parse_buddyrights(aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
252 | static int gaim_parse_locerr (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
253 | 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
|
254 | static int gaim_parse_genericerr (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
255 | static int gaim_memrequest (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
256 | static int gaim_selfinfo (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
257 | static int gaim_offlinemsg (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
258 | static int gaim_offlinemsgdone (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
259 | static int gaim_icqalias (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
260 | static int gaim_icqinfo (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
261 | static int gaim_popup (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
262 | #ifndef NOSSI |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
263 | static int gaim_ssi_parseerr (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
264 | static int gaim_ssi_parserights (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
265 | static int gaim_ssi_parselist (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
266 | static int gaim_ssi_parseack (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
267 | static int gaim_ssi_authgiven (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
268 | static int gaim_ssi_authrequest (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
269 | static int gaim_ssi_authreply (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
270 | static int gaim_ssi_gotadded (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
271 | #endif |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
272 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
273 | /* for DirectIM/image transfer */ |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
274 | static int gaim_odc_initiate (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
275 | static int gaim_odc_incoming (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
276 | static int gaim_odc_typing (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
277 | static int gaim_update_ui (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
278 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
279 | /* for file transfer */ |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
280 | static int oscar_sendfile_estblsh(aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
281 | static int oscar_sendfile_prompt (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
282 | static int oscar_sendfile_ack (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
283 | static int oscar_sendfile_done (aim_session_t *, aim_frame_t *, ...); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
284 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
285 | /* for icons */ |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
286 | static gboolean gaim_icon_timerfunc(gpointer data); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
287 | |
|
5306
1707fdf8c530
[gaim-migrate @ 5678]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
288 | /* prpl actions - remove this at some point */ |
| 5575 | 289 | static void oscar_set_info(GaimConnection *gc, char *text); |
|
5306
1707fdf8c530
[gaim-migrate @ 5678]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
290 | |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
291 | static void gaim_free_name_data(struct name_data *data) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
292 | g_free(data->name); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
293 | g_free(data->nick); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
294 | g_free(data); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
295 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
296 | |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
297 | static fu32_t oscar_encoding_check(const char *utf8) |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
298 | { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
299 | int i = 0; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
300 | fu32_t encodingflag = 0; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
301 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
302 | /* Determine how we can send this message. Per the warnings elsewhere |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
303 | * in this file, these little checks determine the simplest encoding |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
304 | * we can use for a given message send using it. */ |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
305 | while (utf8[i]) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
306 | if ((unsigned char)utf8[i] > 0x7f) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
307 | /* not ASCII! */ |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
308 | encodingflag = AIM_IMFLAGS_ISO_8859_1; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
309 | break; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
310 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
311 | i++; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
312 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
313 | while (utf8[i]) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
314 | /* ISO-8859-1 is 0x00-0xbf in the first byte |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
315 | * followed by 0xc0-0xc3 in the second */ |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
316 | if ((unsigned char)utf8[i] < 0x80) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
317 | i++; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
318 | continue; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
319 | } else if (((unsigned char)utf8[i] & 0xfc) == 0xc0 && |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
320 | ((unsigned char)utf8[i + 1] & 0xc0) == 0x80) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
321 | i += 2; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
322 | continue; |
|
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 | encodingflag = AIM_IMFLAGS_UNICODE; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
325 | break; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
326 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
327 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
328 | return encodingflag; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
329 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
330 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
331 | static fu32_t oscar_encoding_parse(const char *enc) |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
332 | { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
333 | char *charset; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
334 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
335 | /* If anything goes wrong, fall back on ASCII and print a message */ |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
336 | if (enc == NULL) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
337 | gaim_debug(GAIM_DEBUG_WARNING, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
338 | "Encoding was null, that's odd\n"); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
339 | return 0; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
340 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
341 | charset = strstr(enc, "charset="); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
342 | if (charset == NULL) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
343 | gaim_debug(GAIM_DEBUG_WARNING, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
344 | "No charset specified for info, assuming ASCII\n"); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
345 | return 0; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
346 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
347 | charset += 8; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
348 | if (!strcmp(charset, "\"us-ascii\"") || !strcmp(charset, "\"utf-8\"")) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
349 | /* UTF-8 is our native charset, ASCII is a proper subset */ |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
350 | return 0; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
351 | } else if (!strcmp(charset, "\"iso-8859-1\"")) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
352 | return AIM_IMFLAGS_ISO_8859_1; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
353 | } else if (!strcmp(charset, "\"unicode-2-0\"")) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
354 | return AIM_IMFLAGS_UNICODE; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
355 | } else { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
356 | gaim_debug(GAIM_DEBUG_WARNING, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
357 | "Unrecognized character set '%s', using ASCII\n", charset); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
358 | return 0; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
359 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
360 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
361 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
362 | gchar *oscar_encoding_to_utf8(const char *encoding, char *text, int textlen) |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
363 | { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
364 | gchar *utf8 = NULL; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
365 | int flags = oscar_encoding_parse(encoding); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
366 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
367 | switch (flags) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
368 | case 0: |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
369 | utf8 = g_strndup(text, textlen); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
370 | break; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
371 | case AIM_IMFLAGS_ISO_8859_1: |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
372 | utf8 = g_convert(text, textlen, "UTF-8", "ISO-8859-1", NULL, NULL, NULL); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
373 | break; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
374 | case AIM_IMFLAGS_UNICODE: |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
375 | utf8 = g_convert(text, textlen, "UTF-8", "UCS-2BE", NULL, NULL, NULL); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
376 | break; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
377 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
378 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
379 | return utf8; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
380 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
381 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
382 | static struct direct_im *find_direct_im(struct oscar_data *od, const char *who) { |
| 2086 | 383 | GSList *d = od->direct_ims; |
| 384 | struct direct_im *m = NULL; | |
| 385 | ||
| 386 | while (d) { | |
| 387 | m = (struct direct_im *)d->data; | |
| 4355 | 388 | if (!aim_sncmp(who, m->name)) |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
389 | return m; |
| 2086 | 390 | d = d->next; |
| 391 | } | |
| 392 | ||
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
393 | return NULL; |
| 2086 | 394 | } |
| 395 | ||
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
396 | static char *extract_name(const char *name) { |
| 4121 | 397 | char *tmp, *x; |
| 2086 | 398 | int i, j; |
| 4120 | 399 | |
| 400 | if (!name) | |
| 4121 | 401 | return NULL; |
| 402 | ||
| 4120 | 403 | x = strchr(name, '-'); |
| 4121 | 404 | |
| 2086 | 405 | if (!x) return NULL; |
| 406 | x = strchr(++x, '-'); | |
| 407 | if (!x) return NULL; | |
| 408 | tmp = g_strdup(++x); | |
| 409 | ||
| 410 | for (i = 0, j = 0; x[i]; i++) { | |
|
2361
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
411 | char hex[3]; |
|
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
412 | if (x[i] != '%') { |
| 2086 | 413 | tmp[j++] = x[i]; |
|
2361
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
414 | continue; |
| 2086 | 415 | } |
|
2361
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
416 | strncpy(hex, x + ++i, 2); hex[2] = 0; |
|
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
417 | i++; |
|
73a8ac410e85
[gaim-migrate @ 2374]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2357
diff
changeset
|
418 | tmp[j++] = strtol(hex, NULL, 16); |
| 2086 | 419 | } |
| 420 | ||
| 421 | tmp[j] = 0; | |
| 422 | return tmp; | |
| 423 | } | |
| 424 | ||
| 5575 | 425 | static struct chat_connection *find_oscar_chat(GaimConnection *gc, int id) { |
| 2086 | 426 | GSList *g = ((struct oscar_data *)gc->proto_data)->oscar_chats; |
| 427 | struct chat_connection *c = NULL; | |
| 428 | ||
| 429 | while (g) { | |
| 430 | c = (struct chat_connection *)g->data; | |
| 431 | if (c->id == id) | |
| 432 | break; | |
| 433 | g = g->next; | |
| 434 | c = NULL; | |
| 435 | } | |
| 436 | ||
| 437 | return c; | |
| 438 | } | |
| 439 | ||
| 5575 | 440 | 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
|
441 | aim_conn_t *conn) { |
| 2086 | 442 | GSList *g = ((struct oscar_data *)gc->proto_data)->oscar_chats; |
| 443 | struct chat_connection *c = NULL; | |
| 444 | ||
| 445 | while (g) { | |
| 446 | c = (struct chat_connection *)g->data; | |
| 447 | if (c->conn == conn) | |
| 448 | break; | |
| 449 | g = g->next; | |
| 450 | c = NULL; | |
| 451 | } | |
| 452 | ||
| 453 | return c; | |
| 454 | } | |
| 455 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
456 | static void gaim_odc_disconnect(aim_session_t *sess, aim_conn_t *conn) { |
| 5575 | 457 | GaimConnection *gc = sess->aux_data; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
458 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
459 | struct gaim_conversation *cnv; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
460 | struct direct_im *dim; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
461 | char *sn; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
462 | char buf[256]; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
463 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
464 | sn = g_strdup(aim_odc_getsn(conn)); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
465 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
466 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
467 | "%s disconnected Direct IM.\n", sn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
468 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
469 | dim = find_direct_im(od, sn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
470 | od->direct_ims = g_slist_remove(od->direct_ims, dim); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
471 | gaim_input_remove(dim->watcher); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
472 | |
| 3008 | 473 | if (dim->connected) |
| 474 | g_snprintf(buf, sizeof buf, _("Direct IM with %s closed"), sn); | |
| 475 | else | |
| 476 | g_snprintf(buf, sizeof buf, _("Direct IM with %s failed"), sn); | |
| 477 | ||
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
478 | if ((cnv = gaim_find_conversation(sn))) |
|
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
479 | gaim_conversation_write(cnv, NULL, buf, -1, WFLAG_SYSTEM, time(NULL)); |
|
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
480 | |
| 5579 | 481 | gaim_conversation_update_progress(cnv, 0); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
482 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
483 | g_free(dim); /* I guess? I don't see it anywhere else... -- mid */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
484 | g_free(sn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
485 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
486 | return; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
487 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
488 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
489 | static void oscar_callback(gpointer data, gint source, GaimInputCondition condition) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
490 | aim_conn_t *conn = (aim_conn_t *)data; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
491 | aim_session_t *sess = aim_conn_getsess(conn); |
| 5575 | 492 | GaimConnection *gc = sess ? sess->aux_data : NULL; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
493 | struct oscar_data *od; |
| 2086 | 494 | |
| 495 | if (!gc) { | |
| 496 | /* gc is null. we return, else we seg SIGSEG on next line. */ | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
497 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
498 | "oscar callback for closed connection (1).\n"); |
| 2086 | 499 | return; |
| 500 | } | |
| 501 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
502 | od = (struct oscar_data *)gc->proto_data; |
| 2086 | 503 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
504 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 2086 | 505 | /* oh boy. this is probably bad. i guess the only thing we |
| 506 | * can really do is return? */ | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
507 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
508 | "oscar callback for closed connection (2).\n"); |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
509 | gaim_debug(GAIM_DEBUG_MISC, "oscar", "gc = %p\n", gc); |
| 2086 | 510 | return; |
| 511 | } | |
| 512 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
513 | if (condition & GAIM_INPUT_READ) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
514 | if (conn->type == AIM_CONN_TYPE_LISTENER) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
515 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
516 | "got information on rendezvous listener\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
517 | if (aim_handlerendconnect(od->sess, conn) < 0) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
518 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
519 | "connection error (rendezvous listener)\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
520 | aim_conn_kill(od->sess, &conn); |
| 2086 | 521 | } |
| 522 | } else { | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
523 | if (aim_get_command(od->sess, conn) >= 0) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
524 | aim_rxdispatch(od->sess); |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
525 | if (od->killme) |
|
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
526 | gaim_connection_destroy(gc); |
| 2086 | 527 | } else { |
| 528 | if ((conn->type == AIM_CONN_TYPE_BOS) || | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
529 | !(aim_getconn_type(od->sess, AIM_CONN_TYPE_BOS))) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
530 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
531 | "major connection error\n"); |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
532 | gaim_connection_error(gc, _("Disconnected.")); |
| 2086 | 533 | } else if (conn->type == AIM_CONN_TYPE_CHAT) { |
| 534 | struct chat_connection *c = find_oscar_chat_by_conn(gc, conn); | |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
535 | char *buf; |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
536 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
537 | "disconnected from chat room %s\n", c->name); |
| 2086 | 538 | c->conn = NULL; |
| 539 | if (c->inpa > 0) | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
540 | gaim_input_remove(c->inpa); |
| 2086 | 541 | c->inpa = 0; |
| 542 | c->fd = -1; | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
543 | aim_conn_kill(od->sess, &conn); |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
544 | buf = g_strdup_printf(_("You have been disconnected from chat room %s."), c->name); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
545 | gaim_notify_error(gc, NULL, buf, NULL); |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
546 | g_free(buf); |
| 2086 | 547 | } else if (conn->type == AIM_CONN_TYPE_CHATNAV) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
548 | if (od->cnpa > 0) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
549 | gaim_input_remove(od->cnpa); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
550 | od->cnpa = 0; |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
551 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
552 | "removing chatnav input watcher\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
553 | while (od->create_rooms) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
554 | struct create_room *cr = od->create_rooms->data; |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
555 | g_free(cr->name); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
556 | od->create_rooms = |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
557 | g_slist_remove(od->create_rooms, cr); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
558 | g_free(cr); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
559 | gaim_notify_error(gc, NULL, |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
560 | _("Chat is currently unavailable"), |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
561 | NULL); |
| 2086 | 562 | } |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
563 | aim_conn_kill(od->sess, &conn); |
| 2086 | 564 | } else if (conn->type == AIM_CONN_TYPE_AUTH) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
565 | if (od->paspa > 0) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
566 | gaim_input_remove(od->paspa); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
567 | od->paspa = 0; |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
568 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
569 | "removing authconn input watcher\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
570 | aim_conn_kill(od->sess, &conn); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
571 | } else if (conn->type == AIM_CONN_TYPE_EMAIL) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
572 | if (od->emlpa > 0) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
573 | gaim_input_remove(od->emlpa); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
574 | od->emlpa = 0; |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
575 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
576 | "removing email input watcher\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
577 | aim_conn_kill(od->sess, &conn); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
578 | } else if (conn->type == AIM_CONN_TYPE_ICON) { |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
579 | if (od->icopa > 0) |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
580 | gaim_input_remove(od->icopa); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
581 | od->icopa = 0; |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
582 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
583 | "removing icon input watcher\n"); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
584 | aim_conn_kill(od->sess, &conn); |
| 2086 | 585 | } else if (conn->type == AIM_CONN_TYPE_RENDEZVOUS) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
586 | if (conn->subtype == AIM_CONN_SUBTYPE_OFT_DIRECTIM) |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
587 | gaim_odc_disconnect(od->sess, conn); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
588 | aim_conn_kill(od->sess, &conn); |
| 2086 | 589 | } else { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
590 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
591 | "holy crap! generic connection error! %hu\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
592 | conn->type); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
593 | aim_conn_kill(od->sess, &conn); |
| 2086 | 594 | } |
| 595 | } | |
| 596 | } | |
| 597 | } | |
| 598 | } | |
| 599 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
600 | static void oscar_debug(aim_session_t *sess, int level, const char *format, va_list va) { |
| 2086 | 601 | char *s = g_strdup_vprintf(format, va); |
| 602 | char buf[256]; | |
| 603 | char *t; | |
| 5575 | 604 | GaimConnection *gc = sess->aux_data; |
| 605 | ||
| 606 | g_snprintf(buf, sizeof(buf), "%s %d: ", gaim_account_get_username(gaim_connection_get_account(gc)), level); | |
| 2086 | 607 | t = g_strconcat(buf, s, NULL); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
608 | gaim_debug(GAIM_DEBUG_INFO, "oscar", t); |
| 2086 | 609 | if (t[strlen(t)-1] != '\n') |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
610 | gaim_debug(GAIM_DEBUG_INFO, NULL, "\n"); |
| 2086 | 611 | g_free(t); |
| 612 | g_free(s); | |
| 613 | } | |
| 614 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
615 | static void oscar_login_connect(gpointer data, gint source, GaimInputCondition cond) |
| 2086 | 616 | { |
| 5575 | 617 | GaimConnection *gc = data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
618 | struct oscar_data *od; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
619 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
620 | aim_conn_t *conn; |
| 2086 | 621 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
622 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 2086 | 623 | close(source); |
| 624 | return; | |
| 625 | } | |
| 626 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
627 | od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
628 | sess = od->sess; |
| 2086 | 629 | 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
|
630 | |
|
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
631 | conn->fd = source; |
| 2086 | 632 | |
| 633 | if (source < 0) { | |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
634 | gaim_connection_error(gc, _("Couldn't connect to host")); |
| 2086 | 635 | return; |
| 636 | } | |
| 637 | ||
| 638 | aim_conn_completeconnect(sess, conn); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
639 | gc->inpa = gaim_input_add(conn->fd, GAIM_INPUT_READ, oscar_callback, conn); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
640 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
641 | "Password sent, waiting for response\n"); |
| 2086 | 642 | } |
| 643 | ||
| 5575 | 644 | static void oscar_login(GaimAccount *account) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
645 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
646 | aim_conn_t *conn; |
| 2086 | 647 | char buf[256]; |
| 5575 | 648 | GaimConnection *gc = gaim_account_get_connection(account); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
649 | struct oscar_data *od = gc->proto_data = g_new0(struct oscar_data, 1); |
| 2086 | 650 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
651 | gaim_debug(GAIM_DEBUG_MISC, "oscar", "oscar_login: gc = %p\n", gc); |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
652 | |
| 5575 | 653 | if (isdigit(*(gaim_account_get_username(account)))) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
654 | od->icq = TRUE; |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
655 | } else { |
|
2918
f4efca1781b7
[gaim-migrate @ 2931]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2916
diff
changeset
|
656 | gc->flags |= OPT_CONN_HTML; |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4102
diff
changeset
|
657 | gc->flags |= OPT_CONN_AUTO_RESP; |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
658 | } |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
659 | od->buddyinfo = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); |
| 2086 | 660 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
661 | sess = g_new0(aim_session_t, 1); |
| 2086 | 662 | |
| 663 | aim_session_init(sess, AIM_SESS_FLAGS_NONBLOCKCONNECT, 0); | |
| 664 | aim_setdebuggingcb(sess, oscar_debug); | |
| 665 | ||
| 666 | /* we need an immediate queue because we don't use a while-loop to | |
| 667 | * see if things need to be sent. */ | |
| 668 | aim_tx_setenqueue(sess, AIM_TX_IMMEDIATE, NULL); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
669 | od->sess = sess; |
| 2086 | 670 | sess->aux_data = gc; |
| 671 | ||
| 672 | conn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL); | |
| 673 | if (conn == NULL) { | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
674 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
675 | "internal connection error\n"); |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
676 | gaim_connection_error(gc, _("Unable to login to AIM")); |
| 2086 | 677 | return; |
| 678 | } | |
| 679 | ||
| 5575 | 680 | g_snprintf(buf, sizeof(buf), _("Signon: %s"), gaim_account_get_username(account)); |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
681 | gaim_connection_update_progress(gc, buf, 2, 5); |
| 2086 | 682 | |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
683 | aim_conn_addhandler(sess, conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0); |
| 2086 | 684 | aim_conn_addhandler(sess, conn, 0x0017, 0x0007, gaim_parse_login, 0); |
| 685 | aim_conn_addhandler(sess, conn, 0x0017, 0x0003, gaim_parse_auth_resp, 0); | |
| 686 | ||
| 687 | conn->status |= AIM_CONN_STATUS_INPROGRESS; | |
| 5575 | 688 | if (proxy_connect(account, gaim_account_get_string(account, "server", FAIM_LOGIN_SERVER), |
| 689 | gaim_account_get_int(account, "port", FAIM_LOGIN_PORT), | |
| 690 | oscar_login_connect, gc) < 0) { | |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
691 | gaim_connection_error(gc, _("Couldn't connect to host")); |
| 2086 | 692 | return; |
| 693 | } | |
| 5575 | 694 | aim_request_login(sess, conn, gaim_account_get_username(account)); |
| 695 | } | |
| 696 | ||
| 697 | static void oscar_close(GaimConnection *gc) { | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
698 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
699 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
700 | while (od->oscar_chats) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
701 | struct chat_connection *n = od->oscar_chats->data; |
| 2086 | 702 | if (n->inpa > 0) |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
703 | gaim_input_remove(n->inpa); |
| 2086 | 704 | g_free(n->name); |
| 705 | g_free(n->show); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
706 | od->oscar_chats = g_slist_remove(od->oscar_chats, n); |
| 2086 | 707 | g_free(n); |
| 708 | } | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
709 | while (od->direct_ims) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
710 | struct direct_im *n = od->direct_ims->data; |
| 2086 | 711 | if (n->watcher > 0) |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
712 | gaim_input_remove(n->watcher); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
713 | od->direct_ims = g_slist_remove(od->direct_ims, n); |
| 2086 | 714 | g_free(n); |
| 715 | } | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
716 | /* BBB */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
717 | while (od->file_transfers) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
718 | struct gaim_xfer *xfer; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
719 | xfer = (struct gaim_xfer *)od->file_transfers->data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
720 | gaim_xfer_destroy(xfer); |
| 3630 | 721 | } |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
722 | while (od->requesticon) { |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
723 | char *sn = od->requesticon->data; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
724 | od->requesticon = g_slist_remove(od->requesticon, sn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
725 | free(sn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
726 | } |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
727 | g_hash_table_destroy(od->buddyinfo); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
728 | while (od->evilhack) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
729 | g_free(od->evilhack->data); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
730 | od->evilhack = g_slist_remove(od->evilhack, od->evilhack->data); |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
731 | } |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
732 | while (od->create_rooms) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
733 | struct create_room *cr = od->create_rooms->data; |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
734 | g_free(cr->name); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
735 | od->create_rooms = g_slist_remove(od->create_rooms, cr); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
736 | g_free(cr); |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
737 | } |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
738 | if (od->email) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
739 | g_free(od->email); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
740 | if (od->newp) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
741 | g_free(od->newp); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
742 | if (od->oldp) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
743 | g_free(od->oldp); |
| 2086 | 744 | if (gc->inpa > 0) |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
745 | gaim_input_remove(gc->inpa); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
746 | if (od->cnpa > 0) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
747 | gaim_input_remove(od->cnpa); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
748 | if (od->paspa > 0) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
749 | gaim_input_remove(od->paspa); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
750 | if (od->emlpa > 0) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
751 | gaim_input_remove(od->emlpa); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
752 | if (od->icopa > 0) |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
753 | gaim_input_remove(od->icopa); |
|
4832
32a5d9c54484
[gaim-migrate @ 5157]
Mark Doliner <markdoliner@pidgin.im>
parents:
4830
diff
changeset
|
754 | if (od->icopa > 0) |
|
32a5d9c54484
[gaim-migrate @ 5157]
Mark Doliner <markdoliner@pidgin.im>
parents:
4830
diff
changeset
|
755 | gaim_input_remove(od->icopa); |
|
32a5d9c54484
[gaim-migrate @ 5157]
Mark Doliner <markdoliner@pidgin.im>
parents:
4830
diff
changeset
|
756 | if (od->icontimer) |
|
32a5d9c54484
[gaim-migrate @ 5157]
Mark Doliner <markdoliner@pidgin.im>
parents:
4830
diff
changeset
|
757 | g_source_remove(od->icontimer); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
758 | aim_session_kill(od->sess); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
759 | g_free(od->sess); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
760 | od->sess = NULL; |
| 2086 | 761 | g_free(gc->proto_data); |
| 762 | gc->proto_data = NULL; | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
763 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "Signed off.\n"); |
| 2086 | 764 | } |
| 765 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
766 | static void oscar_bos_connect(gpointer data, gint source, GaimInputCondition cond) { |
| 5575 | 767 | GaimConnection *gc = data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
768 | struct oscar_data *od; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
769 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
770 | aim_conn_t *bosconn; |
| 2086 | 771 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
772 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 2086 | 773 | close(source); |
| 774 | return; | |
| 775 | } | |
| 776 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
777 | od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
778 | sess = od->sess; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
779 | bosconn = od->conn; |
|
4366
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
780 | bosconn->fd = source; |
| 2086 | 781 | |
| 782 | if (source < 0) { | |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
783 | gaim_connection_error(gc, _("Could Not Connect")); |
| 2086 | 784 | return; |
| 785 | } | |
| 786 | ||
| 787 | aim_conn_completeconnect(sess, bosconn); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
788 | gc->inpa = gaim_input_add(bosconn->fd, GAIM_INPUT_READ, oscar_callback, bosconn); |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
789 | gaim_connection_update_progress(gc, |
|
5577
2b809e0cefcd
[gaim-migrate @ 5981]
Christian Hammond <chipx86@chipx86.com>
parents:
5576
diff
changeset
|
790 | _("Connection established, cookie sent"), 4, 5); |
| 2086 | 791 | } |
| 792 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
793 | /* BBB */ |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
794 | /* |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
795 | * 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
|
796 | * 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
|
797 | * ninja. |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
798 | * |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
799 | * The series of events for a file send is: |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
800 | * -Create xfer and call gaim_xfer_request (this happens in oscar_ask_sendfile) |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
801 | * -User chooses a file and oscar_xfer_init is called. It establishs a |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
802 | * 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
|
803 | * gives them the file name, port, IP, etc.) |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
804 | * -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
|
805 | * in oscar_sendfile_estblsh) |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
806 | * -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
|
807 | * -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
|
808 | * connection. |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
809 | * -We get drunk because file transfer kicks ass. |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
810 | * |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
811 | * The series of events for a file receive is: |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
812 | * -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
|
813 | * -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
|
814 | * oscar_xfer_init is called |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
815 | * -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
|
816 | * -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
|
817 | * them an AIM_CB_OFT_ACK. |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
818 | * -They begin to send us lots of raw data. |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
819 | * -When they finish sending data we send an AIM_CB_OFT_DONE and then close |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
820 | * the connectionn. |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
821 | */ |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
822 | static void oscar_sendfile_connected(gpointer data, gint source, GaimInputCondition condition); |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
823 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
824 | /* XXX - This function is pretty ugly */ |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
825 | static void oscar_xfer_init(struct gaim_xfer *xfer) |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
826 | { |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
827 | struct aim_oft_info *oft_info = xfer->data; |
| 5575 | 828 | GaimConnection *gc = oft_info->sess->aux_data; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
829 | struct oscar_data *od = gc->proto_data; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
830 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
831 | if (gaim_xfer_get_type(xfer) == GAIM_XFER_SEND) { |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
832 | int i; |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
833 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
834 | xfer->filename = g_path_get_basename(xfer->local_filename); |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
835 | strncpy(oft_info->fh.name, xfer->filename, 64); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
836 | oft_info->fh.totsize = gaim_xfer_get_size(xfer); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
837 | oft_info->fh.size = gaim_xfer_get_size(xfer); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
838 | oft_info->fh.checksum = aim_oft_checksum_file(xfer->local_filename); |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
839 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
840 | /* |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
841 | * First try the port specified earlier (5190). If that fails, |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
842 | * increment by 1 and try again. |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
843 | */ |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
844 | aim_sendfile_listen(od->sess, oft_info); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
845 | for (i=0; (i<5 && !oft_info->conn); i++) { |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
846 | xfer->local_port = oft_info->port = oft_info->port + 1; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
847 | aim_sendfile_listen(od->sess, oft_info); |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
848 | } |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
849 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
850 | "port is %d, ip is %s\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
851 | xfer->local_port, oft_info->clientip); |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
852 | if (oft_info->conn) { |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
853 | xfer->watcher = gaim_input_add(oft_info->conn->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
854 | aim_im_sendch2_sendfile_ask(od->sess, oft_info); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
855 | aim_conn_addhandler(od->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_ESTABLISHED, oscar_sendfile_estblsh, 0); |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
856 | } else { |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
857 | gaim_notify_error(gc, NULL, _("File Transfer Aborted"), |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
858 | _("Unable to establish listener socket.")); |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
859 | /* XXX - The below line causes a crash because the transfer is canceled before the "Ok" callback on the file selection thing exists, I think */ |
|
4675
8e0a7b537ca2
[gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents:
4666
diff
changeset
|
860 | /* gaim_xfer_cancel_remote(xfer); */ |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
861 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
862 | } else if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) { |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
863 | oft_info->conn = aim_newconn(od->sess, AIM_CONN_TYPE_RENDEZVOUS, NULL); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
864 | if (oft_info->conn) { |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
865 | oft_info->conn->subtype = AIM_CONN_SUBTYPE_OFT_SENDFILE; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
866 | aim_conn_addhandler(od->sess, oft_info->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_PROMPT, oscar_sendfile_prompt, 0); |
| 5575 | 867 | oft_info->conn->fd = xfer->fd = proxy_connect(gaim_connection_get_account(gc), xfer->remote_ip, xfer->remote_port, |
| 868 | oscar_sendfile_connected, xfer); | |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
869 | if (xfer->fd == -1) { |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
870 | gaim_notify_error(gc, NULL, _("File Transfer Aborted"), |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
871 | _("Unable to establish file descriptor.")); |
|
4675
8e0a7b537ca2
[gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents:
4666
diff
changeset
|
872 | /* gaim_xfer_cancel_remote(xfer); */ |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
873 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
874 | } else { |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
875 | gaim_notify_error(gc, NULL, _("File Transfer Aborted"), |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
876 | _("Unable to create new connection.")); |
|
4675
8e0a7b537ca2
[gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents:
4666
diff
changeset
|
877 | /* gaim_xfer_cancel_remote(xfer); */ |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
878 | /* Try a different port? Ask them to connect to us? */ |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
879 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
880 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
881 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
882 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
883 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
884 | static void oscar_xfer_start(struct gaim_xfer *xfer) |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
885 | { |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
886 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
887 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "AAA - in oscar_xfer_start\n"); |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
888 | /* I'm pretty sure we don't need to do jack here. Nor Jill. */ |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
889 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
890 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
891 | static void oscar_xfer_end(struct gaim_xfer *xfer) |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
892 | { |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
893 | struct aim_oft_info *oft_info = xfer->data; |
| 5575 | 894 | GaimConnection *gc = oft_info->sess->aux_data; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
895 | struct oscar_data *od = gc->proto_data; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
896 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
897 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "AAA - in oscar_xfer_end\n"); |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
898 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
899 | if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) { |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
900 | oft_info->fh.nrecvd = gaim_xfer_get_bytes_sent(xfer); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
901 | aim_oft_sendheader(oft_info->sess, AIM_CB_OFT_DONE, oft_info); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
902 | } |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
903 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
904 | aim_conn_kill(oft_info->sess, &oft_info->conn); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
905 | aim_oft_destroyinfo(oft_info); |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
906 | xfer->data = NULL; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
907 | od->file_transfers = g_slist_remove(od->file_transfers, xfer); |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
908 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
909 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
910 | static void oscar_xfer_cancel_send(struct gaim_xfer *xfer) |
|
4675
8e0a7b537ca2
[gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents:
4666
diff
changeset
|
911 | { |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
912 | struct aim_oft_info *oft_info = xfer->data; |
| 5575 | 913 | GaimConnection *gc = oft_info->sess->aux_data; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
914 | struct oscar_data *od = gc->proto_data; |
|
4763
7313e8049f0e
[gaim-migrate @ 5081]
Mark Doliner <markdoliner@pidgin.im>
parents:
4762
diff
changeset
|
915 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
916 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
917 | "AAA - in oscar_xfer_cancel_send\n"); |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
918 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
919 | aim_im_sendch2_sendfile_cancel(oft_info->sess, oft_info); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
920 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
921 | aim_conn_kill(oft_info->sess, &oft_info->conn); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
922 | aim_oft_destroyinfo(oft_info); |
|
4763
7313e8049f0e
[gaim-migrate @ 5081]
Mark Doliner <markdoliner@pidgin.im>
parents:
4762
diff
changeset
|
923 | xfer->data = NULL; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
924 | od->file_transfers = g_slist_remove(od->file_transfers, xfer); |
|
4675
8e0a7b537ca2
[gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents:
4666
diff
changeset
|
925 | } |
|
8e0a7b537ca2
[gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents:
4666
diff
changeset
|
926 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
927 | static void oscar_xfer_cancel_recv(struct gaim_xfer *xfer) |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
928 | { |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
929 | struct aim_oft_info *oft_info = xfer->data; |
| 5575 | 930 | GaimConnection *gc = oft_info->sess->aux_data; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
931 | struct oscar_data *od = gc->proto_data; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
932 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
933 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
934 | "AAA - in oscar_xfer_cancel_recv\n"); |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
935 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
936 | aim_im_sendch2_sendfile_cancel(oft_info->sess, oft_info); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
937 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
938 | aim_conn_kill(oft_info->sess, &oft_info->conn); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
939 | aim_oft_destroyinfo(oft_info); |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
940 | xfer->data = NULL; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
941 | od->file_transfers = g_slist_remove(od->file_transfers, xfer); |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
942 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
943 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
944 | static void oscar_xfer_ack(struct gaim_xfer *xfer, const char *buffer, size_t size) |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
945 | { |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
946 | struct aim_oft_info *oft_info = xfer->data; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
947 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
948 | if (gaim_xfer_get_type(xfer) == GAIM_XFER_SEND) { |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
949 | /* |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
950 | * If we're done sending, intercept the socket from the core ft code |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
951 | * and wait for the other guy to send the "done" OFT packet. |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
952 | */ |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
953 | if (gaim_xfer_get_bytes_remaining(xfer) <= 0) { |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
954 | gaim_input_remove(xfer->watcher); |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
955 | xfer->watcher = gaim_input_add(xfer->fd, GAIM_INPUT_READ, oscar_callback, oft_info->conn); |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
956 | xfer->fd = 0; |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
957 | gaim_xfer_set_completed(xfer, TRUE); |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
958 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
959 | } else if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) { |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
960 | /* Update our rolling checksum. Like Walmart, yo. */ |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
961 | oft_info->fh.recvcsum = aim_oft_checksum_chunk(buffer, size, oft_info->fh.recvcsum); |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
962 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
963 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
964 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
965 | static struct gaim_xfer *oscar_find_xfer_by_cookie(GSList *fts, const char *ck) |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
966 | { |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
967 | struct gaim_xfer *xfer; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
968 | struct aim_oft_info *oft_info; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
969 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
970 | while (fts) { |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
971 | xfer = fts->data; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
972 | oft_info = xfer->data; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
973 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
974 | if (oft_info && !strcmp(ck, oft_info->cookie)) |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
975 | return xfer; |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
976 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
977 | fts = g_slist_next(fts); |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
978 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
979 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
980 | return NULL; |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
981 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
982 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
983 | static struct gaim_xfer *oscar_find_xfer_by_conn(GSList *fts, aim_conn_t *conn) |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
984 | { |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
985 | struct gaim_xfer *xfer; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
986 | struct aim_oft_info *oft_info; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
987 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
988 | while (fts) { |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
989 | xfer = fts->data; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
990 | oft_info = xfer->data; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
991 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
992 | if (oft_info && (conn == oft_info->conn)) |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
993 | return xfer; |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
994 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
995 | fts = g_slist_next(fts); |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
996 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
997 | |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
998 | return NULL; |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
999 | } |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1000 | |
| 5575 | 1001 | static void oscar_ask_sendfile(GaimConnection *gc, const char *destsn) { |
| 3630 | 1002 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1003 | struct gaim_xfer *xfer; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1004 | struct aim_oft_info *oft_info; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1005 | aim_conn_t *conn; |
| 3752 | 1006 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1007 | /* 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
|
1008 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1009 | /* Build the file transfer handle */ |
| 5575 | 1010 | xfer = gaim_xfer_new(gaim_connection_get_account(gc), GAIM_XFER_SEND, destsn); |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1011 | if ((conn = aim_conn_findbygroup(od->sess, 0x0004))) |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1012 | xfer->local_ip = gaim_getip_from_fd(conn->fd); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1013 | xfer->local_port = 5190; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1014 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1015 | /* Create the oscar-specific data */ |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1016 | oft_info = aim_oft_createinfo(od->sess, NULL, destsn, xfer->local_ip, xfer->local_port, 0, 0, NULL); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1017 | xfer->data = oft_info; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1018 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1019 | /* Setup our I/O op functions */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1020 | gaim_xfer_set_init_fnc(xfer, oscar_xfer_init); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1021 | gaim_xfer_set_start_fnc(xfer, oscar_xfer_start); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1022 | gaim_xfer_set_end_fnc(xfer, oscar_xfer_end); |
|
4675
8e0a7b537ca2
[gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents:
4666
diff
changeset
|
1023 | gaim_xfer_set_cancel_send_fnc(xfer, oscar_xfer_cancel_send); |
|
8e0a7b537ca2
[gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents:
4666
diff
changeset
|
1024 | gaim_xfer_set_cancel_recv_fnc(xfer, oscar_xfer_cancel_recv); |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1025 | gaim_xfer_set_ack_fnc(xfer, oscar_xfer_ack); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1026 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1027 | /* Keep track of this transfer for later */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1028 | od->file_transfers = g_slist_append(od->file_transfers, xfer); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1029 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1030 | /* Now perform the request */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1031 | gaim_xfer_request(xfer); |
| 3630 | 1032 | } |
| 1033 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1034 | static int gaim_parse_auth_resp(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 1035 | va_list ap; |
| 2704 | 1036 | struct aim_authresp_info *info; |
| 4452 | 1037 | int i, rc; |
| 1038 | char *host; int port; | |
| 5575 | 1039 | GaimAccount *account; |
| 2704 | 1040 | aim_conn_t *bosconn; |
| 2086 | 1041 | |
| 5575 | 1042 | GaimConnection *gc = sess->aux_data; |
| 2086 | 1043 | struct oscar_data *od = gc->proto_data; |
| 4491 | 1044 | account = gc->account; |
| 5575 | 1045 | port = gaim_account_get_int(account, "port", FAIM_LOGIN_PORT); |
| 2086 | 1046 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1047 | va_start(ap, fr); |
| 2704 | 1048 | info = va_arg(ap, struct aim_authresp_info *); |
| 2086 | 1049 | va_end(ap); |
| 1050 | ||
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1051 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1052 | "inside auth_resp (Screen name: %s)\n", info->sn); |
| 2704 | 1053 | |
|
4293
c025f268b6df
[gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents:
4292
diff
changeset
|
1054 | 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
|
1055 | char buf[256]; |
| 2704 | 1056 | switch (info->errorcode) { |
| 2086 | 1057 | case 0x05: |
| 1058 | /* Incorrect nick/password */ | |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
1059 | gaim_connection_error(gc, _("Incorrect nickname or password.")); |
| 2086 | 1060 | break; |
| 1061 | case 0x11: | |
| 1062 | /* Suspended account */ | |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
1063 | gaim_connection_error(gc, _("Your account is currently suspended.")); |
| 2086 | 1064 | break; |
|
3498
3f6ce04ea3ad
[gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents:
3490
diff
changeset
|
1065 | case 0x14: |
|
3f6ce04ea3ad
[gaim-migrate @ 3561]
Mark Doliner <markdoliner@pidgin.im>
parents:
3490
diff
changeset
|
1066 | /* service temporarily unavailable */ |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
1067 | 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
|
1068 | break; |
| 2086 | 1069 | case 0x18: |
| 1070 | /* connecting too frequently */ | |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
1071 | 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 | 1072 | break; |
| 1073 | case 0x1c: | |
| 1074 | /* client too old */ | |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3952
diff
changeset
|
1075 | g_snprintf(buf, sizeof(buf), _("The client version you are using is too old. Please upgrade at %s"), WEBSITE); |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
1076 | gaim_connection_error(gc, buf); |
| 2086 | 1077 | break; |
| 1078 | default: | |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
1079 | gaim_connection_error(gc, _("Authentication Failed")); |
| 2086 | 1080 | break; |
| 1081 | } | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1082 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1083 | "Login Error Code 0x%04hx\n", info->errorcode); |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1084 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1085 | "Error URL: %s\n", info->errorurl); |
| 2086 | 1086 | od->killme = TRUE; |
| 1087 | return 1; | |
| 1088 | } | |
| 1089 | ||
| 1090 | ||
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1091 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1092 | "Reg status: %hu\n", info->regstatus); |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1093 | |
| 2704 | 1094 | if (info->email) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1095 | gaim_debug(GAIM_DEBUG_MISC, "oscar", "Email: %s\n", info->email); |
| 2086 | 1096 | } else { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1097 | gaim_debug(GAIM_DEBUG_MISC, "oscar", "Email is NULL\n"); |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1098 | } |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1099 | |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1100 | gaim_debug(GAIM_DEBUG_MISC, "oscar", "BOSIP: %s\n", info->bosip); |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1101 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1102 | "Closing auth connection...\n"); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1103 | aim_conn_kill(sess, &fr->conn); |
| 2086 | 1104 | |
| 1105 | bosconn = aim_newconn(sess, AIM_CONN_TYPE_BOS, NULL); | |
| 1106 | if (bosconn == NULL) { | |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
1107 | gaim_connection_error(gc, _("Internal Error")); |
| 2086 | 1108 | od->killme = TRUE; |
| 1109 | return 0; | |
| 1110 | } | |
| 1111 | ||
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
1112 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0); |
| 2675 | 1113 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_bos, 0); |
| 2086 | 1114 | aim_conn_addhandler(sess, bosconn, 0x0009, 0x0003, gaim_bosrights, 0); |
| 1115 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_ACK, AIM_CB_ACK_ACK, NULL, 0); | |
| 1116 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_REDIRECT, gaim_handle_redirect, 0); | |
| 2993 | 1117 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_RIGHTSINFO, gaim_parse_locaterights, 0); |
| 2086 | 1118 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_BUD, AIM_CB_BUD_RIGHTSINFO, gaim_parse_buddyrights, 0); |
| 1119 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_BUD, AIM_CB_BUD_ONCOMING, gaim_parse_oncoming, 0); | |
| 1120 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_BUD, AIM_CB_BUD_OFFGOING, gaim_parse_offgoing, 0); | |
| 1121 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_INCOMING, gaim_parse_incoming_im, 0); | |
| 1122 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_ERROR, gaim_parse_locerr, 0); | |
| 1123 | 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
|
1124 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_CLIENTAUTORESP, gaim_parse_clientauto, 0); |
| 2086 | 1125 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_RATECHANGE, gaim_parse_ratechange, 0); |
| 1126 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_GEN, AIM_CB_GEN_EVIL, gaim_parse_evilnotify, 0); | |
| 1127 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOK, AIM_CB_LOK_ERROR, gaim_parse_searcherror, 0); | |
| 1128 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOK, 0x0003, gaim_parse_searchreply, 0); | |
| 1129 | 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
|
1130 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_MTN, gaim_parse_mtn, 0); |
| 2086 | 1131 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_LOC, AIM_CB_LOC_USERINFO, gaim_parse_user_info, 0); |
| 1132 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_MSG, AIM_CB_MSG_ACK, gaim_parse_msgack, 0); | |
| 1133 | 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
|
1134 | aim_conn_addhandler(sess, bosconn, 0x0004, 0x0005, gaim_icbm_param_info, 0); |
| 2086 | 1135 | aim_conn_addhandler(sess, bosconn, 0x0001, 0x0001, gaim_parse_genericerr, 0); |
| 1136 | aim_conn_addhandler(sess, bosconn, 0x0003, 0x0001, gaim_parse_genericerr, 0); | |
| 1137 | aim_conn_addhandler(sess, bosconn, 0x0009, 0x0001, gaim_parse_genericerr, 0); | |
| 1138 | aim_conn_addhandler(sess, bosconn, 0x0001, 0x001f, gaim_memrequest, 0); | |
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
1139 | aim_conn_addhandler(sess, bosconn, 0x0001, 0x000f, gaim_selfinfo, 0); |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
1140 | 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
|
1141 | 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
|
1142 | 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
|
1143 | 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
|
1144 | 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
|
1145 | #ifndef NOSSI |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
1146 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_ERROR, gaim_ssi_parseerr, 0); |
| 2991 | 1147 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_RIGHTSINFO, gaim_ssi_parserights, 0); |
| 1148 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_LIST, gaim_ssi_parselist, 0); | |
| 1149 | 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
|
1150 | aim_conn_addhandler(sess, bosconn, AIM_CB_FAM_SSI, AIM_CB_SSI_SRVACK, gaim_ssi_parseack, 0); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
1151 | 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
|
1152 | 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
|
1153 | 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
|
1154 | 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
|
1155 | #endif |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
1156 | |
| 2086 | 1157 | ((struct oscar_data *)gc->proto_data)->conn = bosconn; |
| 2704 | 1158 | for (i = 0; i < (int)strlen(info->bosip); i++) { |
| 1159 | if (info->bosip[i] == ':') { | |
| 1160 | port = atoi(&(info->bosip[i+1])); | |
| 2086 | 1161 | break; |
| 1162 | } | |
| 1163 | } | |
| 2704 | 1164 | host = g_strndup(info->bosip, i); |
| 2086 | 1165 | bosconn->status |= AIM_CONN_STATUS_INPROGRESS; |
| 4634 | 1166 | rc = proxy_connect(gc->account, host, port, oscar_bos_connect, gc); |
| 2086 | 1167 | g_free(host); |
|
4366
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
1168 | if (rc < 0) { |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
1169 | gaim_connection_error(gc, _("Could Not Connect")); |
| 2086 | 1170 | od->killme = TRUE; |
| 1171 | return 0; | |
| 1172 | } | |
|
4293
c025f268b6df
[gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents:
4292
diff
changeset
|
1173 | aim_sendcookie(sess, bosconn, info->cookielen, info->cookie); |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1174 | gaim_input_remove(gc->inpa); |
| 2704 | 1175 | |
| 2086 | 1176 | return 1; |
| 1177 | } | |
| 1178 | ||
| 1179 | struct pieceofcrap { | |
| 5575 | 1180 | GaimConnection *gc; |
| 2086 | 1181 | unsigned long offset; |
| 1182 | unsigned long len; | |
| 1183 | char *modname; | |
| 1184 | int fd; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1185 | aim_conn_t *conn; |
| 2086 | 1186 | unsigned int inpa; |
| 1187 | }; | |
| 1188 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1189 | static void damn_you(gpointer data, gint source, GaimInputCondition c) |
| 2086 | 1190 | { |
| 1191 | struct pieceofcrap *pos = data; | |
| 1192 | struct oscar_data *od = pos->gc->proto_data; | |
| 1193 | char in = '\0'; | |
| 1194 | int x = 0; | |
| 1195 | unsigned char m[17]; | |
| 1196 | ||
| 1197 | while (read(pos->fd, &in, 1) == 1) { | |
| 1198 | if (in == '\n') | |
| 1199 | x++; | |
| 1200 | else if (in != '\r') | |
| 1201 | x = 0; | |
| 1202 | if (x == 2) | |
| 1203 | break; | |
| 1204 | in = '\0'; | |
| 1205 | } | |
| 1206 | if (in != '\n') { | |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3952
diff
changeset
|
1207 | char buf[256]; |
|
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3952
diff
changeset
|
1208 | g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. You may want to use TOC until " |
|
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3952
diff
changeset
|
1209 | "this is fixed. Check %s for updates."), WEBSITE); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
1210 | gaim_notify_warning(pos->gc, NULL, |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
1211 | _("Gaim was Unable to get a valid AIM login hash."), |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
1212 | buf); |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1213 | gaim_input_remove(pos->inpa); |
| 2086 | 1214 | close(pos->fd); |
| 1215 | g_free(pos); | |
| 1216 | return; | |
| 1217 | } | |
| 1218 | read(pos->fd, m, 16); | |
| 1219 | m[16] = '\0'; | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1220 | gaim_debug(GAIM_DEBUG_MISC, "oscar", "Sending hash: "); |
| 2086 | 1221 | for (x = 0; x < 16; x++) |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1222 | gaim_debug(GAIM_DEBUG_MISC, NULL, "%02hhx ", (unsigned char)m[x]); |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1223 | |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1224 | gaim_debug(GAIM_DEBUG_MISC, NULL, "\n"); |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1225 | gaim_input_remove(pos->inpa); |
| 2086 | 1226 | close(pos->fd); |
| 1227 | aim_sendmemblock(od->sess, pos->conn, 0, 16, m, AIM_SENDMEMBLOCK_FLAG_ISHASH); | |
| 1228 | g_free(pos); | |
| 1229 | } | |
| 1230 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1231 | static void straight_to_hell(gpointer data, gint source, GaimInputCondition cond) { |
| 2086 | 1232 | struct pieceofcrap *pos = data; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
1233 | gchar *buf; |
| 2086 | 1234 | |
|
4366
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
1235 | pos->fd = source; |
|
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
1236 | |
| 2086 | 1237 | if (source < 0) { |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
1238 | buf = g_strdup_printf(_("You may be disconnected shortly. You may want to use TOC until " |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3952
diff
changeset
|
1239 | "this is fixed. Check %s for updates."), WEBSITE); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
1240 | gaim_notify_warning(pos->gc, NULL, |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
1241 | _("Gaim was Unable to get a valid AIM login hash."), |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
1242 | buf); |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
1243 | g_free(buf); |
| 2086 | 1244 | if (pos->modname) |
| 1245 | g_free(pos->modname); | |
| 1246 | g_free(pos); | |
| 1247 | return; | |
| 1248 | } | |
| 1249 | ||
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
1250 | buf = g_strdup_printf("GET " AIMHASHDATA "?offset=%ld&len=%ld&modname=%s HTTP/1.0\n\n", |
| 2086 | 1251 | pos->offset, pos->len, pos->modname ? pos->modname : ""); |
| 1252 | write(pos->fd, buf, strlen(buf)); | |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
1253 | g_free(buf); |
| 2086 | 1254 | if (pos->modname) |
| 1255 | g_free(pos->modname); | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1256 | pos->inpa = gaim_input_add(pos->fd, GAIM_INPUT_READ, damn_you, pos); |
| 2086 | 1257 | return; |
| 1258 | } | |
| 1259 | ||
| 1260 | /* size of icbmui.ocm, the largest module in AIM 3.5 */ | |
| 1261 | #define AIM_MAX_FILE_SIZE 98304 | |
| 1262 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1263 | int gaim_memrequest(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 1264 | va_list ap; |
| 1265 | struct pieceofcrap *pos; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1266 | fu32_t offset, len; |
| 2086 | 1267 | char *modname; |
| 1268 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1269 | va_start(ap, fr); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
1270 | offset = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
1271 | len = va_arg(ap, fu32_t); |
| 2086 | 1272 | modname = va_arg(ap, char *); |
| 1273 | va_end(ap); | |
| 1274 | ||
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1275 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
1276 | "offset: %u, len: %u, file: %s\n", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1277 | offset, len, (modname ? modname : "aim.exe")); |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1278 | |
| 2086 | 1279 | if (len == 0) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1280 | gaim_debug(GAIM_DEBUG_MISC, "oscar", "len is 0, hashing NULL\n"); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1281 | aim_sendmemblock(sess, fr->conn, offset, len, NULL, |
| 2086 | 1282 | AIM_SENDMEMBLOCK_FLAG_ISREQUEST); |
| 1283 | return 1; | |
| 1284 | } | |
| 1285 | /* uncomment this when you're convinced it's right. remember, it's been wrong before. | |
| 1286 | if (offset > AIM_MAX_FILE_SIZE || len > AIM_MAX_FILE_SIZE) { | |
| 1287 | char *buf; | |
| 1288 | int i = 8; | |
| 1289 | if (modname) | |
| 1290 | i += strlen(modname); | |
| 1291 | buf = g_malloc(i); | |
| 1292 | i = 0; | |
| 1293 | if (modname) { | |
| 1294 | memcpy(buf, modname, strlen(modname)); | |
| 1295 | i += strlen(modname); | |
| 1296 | } | |
| 1297 | buf[i++] = offset & 0xff; | |
| 1298 | buf[i++] = (offset >> 8) & 0xff; | |
| 1299 | buf[i++] = (offset >> 16) & 0xff; | |
| 1300 | buf[i++] = (offset >> 24) & 0xff; | |
| 1301 | buf[i++] = len & 0xff; | |
| 1302 | buf[i++] = (len >> 8) & 0xff; | |
| 1303 | buf[i++] = (len >> 16) & 0xff; | |
| 1304 | buf[i++] = (len >> 24) & 0xff; | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1305 | gaim_debug(GAIM_DEBUG_MISC, "oscar", "len + offset is invalid, " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1306 | "hashing request\n"); |
| 2086 | 1307 | aim_sendmemblock(sess, command->conn, offset, i, buf, AIM_SENDMEMBLOCK_FLAG_ISREQUEST); |
| 1308 | g_free(buf); | |
| 1309 | return 1; | |
| 1310 | } | |
| 1311 | */ | |
| 1312 | ||
| 1313 | pos = g_new0(struct pieceofcrap, 1); | |
| 1314 | pos->gc = sess->aux_data; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1315 | pos->conn = fr->conn; |
| 2086 | 1316 | |
| 1317 | pos->offset = offset; | |
| 1318 | pos->len = len; | |
| 1319 | pos->modname = modname ? g_strdup(modname) : NULL; | |
| 1320 | ||
| 4634 | 1321 | if (proxy_connect(pos->gc->account, "gaim.sourceforge.net", 80, straight_to_hell, pos) != 0) { |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3952
diff
changeset
|
1322 | char buf[256]; |
| 2086 | 1323 | if (pos->modname) |
| 1324 | g_free(pos->modname); | |
| 1325 | g_free(pos); | |
|
4056
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3952
diff
changeset
|
1326 | g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. You may want to use TOC until " |
|
d75ee349aaa4
[gaim-migrate @ 4266]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
3952
diff
changeset
|
1327 | "this is fixed. Check %s for updates."), WEBSITE); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
1328 | gaim_notify_warning(pos->gc, NULL, |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
1329 | _("Gaim was Unable to get a valid login hash."), |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
1330 | buf); |
| 2086 | 1331 | } |
| 1332 | ||
| 1333 | return 1; | |
| 1334 | } | |
| 1335 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1336 | static int gaim_parse_login(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 1337 | char *key; |
| 1338 | va_list ap; | |
| 5575 | 1339 | GaimConnection *gc = sess->aux_data; |
|
5591
2327f0802baa
[gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents:
5580
diff
changeset
|
1340 | GaimAccount *account = gaim_connection_get_account(gc); |
| 5575 | 1341 | GaimAccount *ac = gaim_connection_get_account(gc); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1342 | struct oscar_data *od = gc->proto_data; |
| 2086 | 1343 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1344 | va_start(ap, fr); |
| 2086 | 1345 | key = va_arg(ap, char *); |
| 1346 | va_end(ap); | |
| 1347 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1348 | if (od->icq) { |
|
3458
6140a920776b
[gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents:
3456
diff
changeset
|
1349 | struct client_info_s info = CLIENTINFO_ICQ_KNOWNGOOD; |
|
5591
2327f0802baa
[gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents:
5580
diff
changeset
|
1350 | aim_send_login(sess, fr->conn, gaim_account_get_username(ac), |
|
2327f0802baa
[gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents:
5580
diff
changeset
|
1351 | gaim_account_get_password(account), &info, key); |
|
3458
6140a920776b
[gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents:
3456
diff
changeset
|
1352 | } else { |
|
6140a920776b
[gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents:
3456
diff
changeset
|
1353 | #if 0 |
|
6140a920776b
[gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents:
3456
diff
changeset
|
1354 | struct client_info_s info = {"gaim", 4, 1, 2010, "us", "en", 0x0004, 0x0000, 0x04b}; |
|
6140a920776b
[gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents:
3456
diff
changeset
|
1355 | #endif |
|
6140a920776b
[gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents:
3456
diff
changeset
|
1356 | struct client_info_s info = CLIENTINFO_AIM_KNOWNGOOD; |
|
5591
2327f0802baa
[gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents:
5580
diff
changeset
|
1357 | aim_send_login(sess, fr->conn, gaim_account_get_username(ac), |
|
2327f0802baa
[gaim-migrate @ 5995]
Christian Hammond <chipx86@chipx86.com>
parents:
5580
diff
changeset
|
1358 | gaim_account_get_password(account), &info, key); |
|
3458
6140a920776b
[gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents:
3456
diff
changeset
|
1359 | } |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1360 | |
| 2086 | 1361 | return 1; |
| 1362 | } | |
| 1363 | ||
| 2675 | 1364 | static int conninitdone_chat(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 1365 | GaimConnection *gc = sess->aux_data; |
| 2647 | 1366 | struct chat_connection *chatcon; |
| 1367 | static int id = 1; | |
| 1368 | ||
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1369 | aim_conn_addhandler(sess, fr->conn, 0x000e, 0x0001, gaim_parse_genericerr, 0); |
| 2675 | 1370 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_USERJOIN, gaim_chat_join, 0); |
| 1371 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_USERLEAVE, gaim_chat_leave, 0); | |
| 1372 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_ROOMINFOUPDATE, gaim_chat_info_update, 0); | |
| 1373 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_INCOMINGMSG, gaim_chat_incoming_msg, 0); | |
| 1374 | ||
| 2672 | 1375 | aim_clientready(sess, fr->conn); |
| 2675 | 1376 | |
| 2647 | 1377 | chatcon = find_oscar_chat_by_conn(gc, fr->conn); |
| 1378 | chatcon->id = id; | |
| 1379 | chatcon->cnv = serv_got_joined_chat(gc, id++, chatcon->show); | |
| 1380 | ||
| 1381 | return 1; | |
| 1382 | } | |
| 1383 | ||
| 2675 | 1384 | static int conninitdone_chatnav(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 1385 | ||
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1386 | aim_conn_addhandler(sess, fr->conn, 0x000d, 0x0001, gaim_parse_genericerr, 0); |
| 2647 | 1387 | aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CTN, AIM_CB_CTN_INFO, gaim_chatnav_info, 0); |
| 2675 | 1388 | |
| 1389 | aim_clientready(sess, fr->conn); | |
| 1390 | ||
| 1391 | aim_chatnav_reqrights(sess, fr->conn); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1392 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1393 | return 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1394 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1395 | |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1396 | 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
|
1397 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1398 | 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
|
1399 | 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
|
1400 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1401 | aim_email_sendcookies(sess, fr->conn); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1402 | aim_email_activate(sess, fr->conn); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1403 | aim_clientready(sess, fr->conn); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1404 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1405 | return 1; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1406 | } |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1407 | |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1408 | static int conninitdone_icon(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 1409 | GaimConnection *gc = sess->aux_data; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1410 | struct oscar_data *od = gc->proto_data; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1411 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1412 | 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
|
1413 | 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
|
1414 | 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
|
1415 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1416 | aim_clientready(sess, fr->conn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1417 | |
| 4823 | 1418 | od->iconconnecting = FALSE; |
| 1419 | ||
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1420 | if (od->icontimer) |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1421 | g_source_remove(od->icontimer); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1422 | od->icontimer = g_timeout_add(100, gaim_icon_timerfunc, gc); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1423 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1424 | return 1; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1425 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1426 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1427 | static void oscar_chatnav_connect(gpointer data, gint source, GaimInputCondition cond) { |
| 5575 | 1428 | GaimConnection *gc = data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1429 | struct oscar_data *od; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1430 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1431 | aim_conn_t *tstconn; |
| 2086 | 1432 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
1433 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 2086 | 1434 | close(source); |
| 1435 | return; | |
| 1436 | } | |
| 1437 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1438 | od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1439 | sess = od->sess; |
| 2086 | 1440 | 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
|
1441 | tstconn->fd = source; |
| 2086 | 1442 | |
| 1443 | if (source < 0) { | |
| 1444 | aim_conn_kill(sess, &tstconn); | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1445 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1446 | "unable to connect to chatnav server\n"); |
| 2086 | 1447 | return; |
| 1448 | } | |
| 1449 | ||
| 1450 | aim_conn_completeconnect(sess, tstconn); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1451 | od->cnpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1452 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "chatnav: connected\n"); |
| 2086 | 1453 | } |
| 1454 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1455 | static void oscar_auth_connect(gpointer data, gint source, GaimInputCondition cond) |
| 2086 | 1456 | { |
| 5575 | 1457 | GaimConnection *gc = data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1458 | struct oscar_data *od; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1459 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1460 | aim_conn_t *tstconn; |
| 2086 | 1461 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
1462 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 2086 | 1463 | close(source); |
| 1464 | return; | |
| 1465 | } | |
| 1466 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1467 | od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1468 | sess = od->sess; |
| 2086 | 1469 | 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
|
1470 | tstconn->fd = source; |
| 2086 | 1471 | |
| 1472 | if (source < 0) { | |
| 1473 | aim_conn_kill(sess, &tstconn); | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1474 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1475 | "unable to connect to authorizer\n"); |
| 2086 | 1476 | return; |
| 1477 | } | |
| 1478 | ||
| 1479 | aim_conn_completeconnect(sess, tstconn); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1480 | od->paspa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1481 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "chatnav: connected\n"); |
| 2086 | 1482 | } |
| 1483 | ||
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
1484 | static void oscar_chat_connect(gpointer data, gint source, GaimInputCondition cond) |
| 2086 | 1485 | { |
| 1486 | struct chat_connection *ccon = data; | |
| 5575 | 1487 | GaimConnection *gc = ccon->gc; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1488 | struct oscar_data *od; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1489 | aim_session_t *sess; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1490 | aim_conn_t *tstconn; |
| 2086 | 1491 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
1492 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 2086 | 1493 | close(source); |
| 1494 | g_free(ccon->show); | |
| 1495 | g_free(ccon->name); | |
| 1496 | g_free(ccon); | |
| 1497 | return; | |
| 1498 | } | |
| 1499 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1500 | od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1501 | sess = od->sess; |
| 2086 | 1502 | tstconn = ccon->conn; |
|
4366
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
1503 | tstconn->fd = source; |
| 2086 | 1504 | |
| 1505 | if (source < 0) { | |
| 1506 | aim_conn_kill(sess, &tstconn); | |
| 1507 | g_free(ccon->show); | |
| 1508 | g_free(ccon->name); | |
| 1509 | g_free(ccon); | |
| 1510 | return; | |
| 1511 | } | |
| 1512 | ||
| 1513 | aim_conn_completeconnect(sess, ccon->conn); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1514 | 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
|
1515 | od->oscar_chats = g_slist_append(od->oscar_chats, ccon); |
| 2086 | 1516 | } |
| 1517 | ||
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1518 | static void oscar_email_connect(gpointer data, gint source, GaimInputCondition cond) { |
| 5575 | 1519 | GaimConnection *gc = data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1520 | struct oscar_data *od; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1521 | aim_session_t *sess; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1522 | aim_conn_t *tstconn; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1523 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
1524 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1525 | close(source); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1526 | return; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1527 | } |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1528 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1529 | od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1530 | sess = od->sess; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1531 | 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
|
1532 | tstconn->fd = source; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1533 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1534 | if (source < 0) { |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1535 | aim_conn_kill(sess, &tstconn); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1536 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1537 | "unable to connect to email server\n"); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1538 | return; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1539 | } |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1540 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1541 | aim_conn_completeconnect(sess, tstconn); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1542 | od->emlpa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1543 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1544 | "email: connected\n"); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1545 | } |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1546 | |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1547 | static void oscar_icon_connect(gpointer data, gint source, GaimInputCondition cond) { |
| 5575 | 1548 | GaimConnection *gc = data; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1549 | struct oscar_data *od; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1550 | aim_session_t *sess; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1551 | aim_conn_t *tstconn; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1552 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
1553 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1554 | close(source); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1555 | return; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1556 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1557 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1558 | od = gc->proto_data; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1559 | sess = od->sess; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1560 | tstconn = aim_getconn_type_all(sess, AIM_CONN_TYPE_ICON); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1561 | tstconn->fd = source; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1562 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1563 | if (source < 0) { |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1564 | aim_conn_kill(sess, &tstconn); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1565 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1566 | "unable to connect to icon server\n"); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1567 | return; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1568 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1569 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1570 | aim_conn_completeconnect(sess, tstconn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1571 | od->icopa = gaim_input_add(tstconn->fd, GAIM_INPUT_READ, oscar_callback, tstconn); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1572 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "icon: connected\n"); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1573 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1574 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1575 | /* 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
|
1576 | static int gaim_handle_redirect(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 1577 | GaimConnection *gc = sess->aux_data; |
| 1578 | GaimAccount *account = gaim_connection_get_account(gc); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1579 | aim_conn_t *tstconn; |
| 4452 | 1580 | int i; |
| 2086 | 1581 | char *host; |
| 1582 | int port; | |
|
4821
9107fba2dbe5
[gaim-migrate @ 5146]
Mark Doliner <markdoliner@pidgin.im>
parents:
4820
diff
changeset
|
1583 | va_list ap; |
|
9107fba2dbe5
[gaim-migrate @ 5146]
Mark Doliner <markdoliner@pidgin.im>
parents:
4820
diff
changeset
|
1584 | struct aim_redirect_data *redir; |
| 2086 | 1585 | |
| 5575 | 1586 | port = gaim_account_get_int(account, "port", FAIM_LOGIN_PORT); |
| 2086 | 1587 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1588 | va_start(ap, fr); |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1589 | redir = va_arg(ap, struct aim_redirect_data *); |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1590 | va_end(ap); |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1591 | |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1592 | for (i = 0; i < (int)strlen(redir->ip); i++) { |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1593 | if (redir->ip[i] == ':') { |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1594 | port = atoi(&(redir->ip[i+1])); |
| 2086 | 1595 | break; |
| 1596 | } | |
| 1597 | } | |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1598 | host = g_strndup(redir->ip, i); |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1599 | |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1600 | switch(redir->group) { |
| 2086 | 1601 | case 0x7: /* Authorizer */ |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1602 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1603 | "Reconnecting with authorizor...\n"); |
| 2086 | 1604 | tstconn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL); |
| 1605 | if (tstconn == NULL) { | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1606 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1607 | "unable to reconnect with authorizer\n"); |
| 2086 | 1608 | g_free(host); |
| 1609 | return 1; | |
| 1610 | } | |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
1611 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0); |
| 2675 | 1612 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_admin, 0); |
| 2086 | 1613 | aim_conn_addhandler(sess, tstconn, 0x0007, 0x0003, gaim_info_change, 0); |
| 1614 | aim_conn_addhandler(sess, tstconn, 0x0007, 0x0005, gaim_info_change, 0); | |
| 1615 | aim_conn_addhandler(sess, tstconn, 0x0007, 0x0007, gaim_account_confirm, 0); | |
| 1616 | ||
| 1617 | tstconn->status |= AIM_CONN_STATUS_INPROGRESS; | |
| 4634 | 1618 | if (proxy_connect(account, host, port, oscar_auth_connect, gc) != 0) { |
| 2086 | 1619 | aim_conn_kill(sess, &tstconn); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1620 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1621 | "unable to reconnect with authorizer\n"); |
| 2086 | 1622 | g_free(host); |
| 1623 | return 1; | |
| 1624 | } | |
|
4293
c025f268b6df
[gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents:
4292
diff
changeset
|
1625 | aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
1626 | break; |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
1627 | |
| 2086 | 1628 | case 0xd: /* ChatNav */ |
| 1629 | tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHATNAV, NULL); | |
| 1630 | if (tstconn == NULL) { | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1631 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1632 | "unable to connect to chatnav server\n"); |
| 2086 | 1633 | g_free(host); |
| 1634 | return 1; | |
| 1635 | } | |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
1636 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0); |
| 2675 | 1637 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_chatnav, 0); |
| 2086 | 1638 | |
| 1639 | tstconn->status |= AIM_CONN_STATUS_INPROGRESS; | |
| 4634 | 1640 | if (proxy_connect(account, host, port, oscar_chatnav_connect, gc) != 0) { |
| 2086 | 1641 | aim_conn_kill(sess, &tstconn); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1642 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1643 | "unable to connect to chatnav server\n"); |
| 2086 | 1644 | g_free(host); |
| 1645 | return 1; | |
| 1646 | } | |
|
4293
c025f268b6df
[gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents:
4292
diff
changeset
|
1647 | aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
1648 | break; |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
1649 | |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
1650 | case 0xe: { /* Chat */ |
| 2086 | 1651 | struct chat_connection *ccon; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1652 | |
| 2086 | 1653 | tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHAT, NULL); |
| 1654 | if (tstconn == NULL) { | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1655 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1656 | "unable to connect to chat server\n"); |
| 2086 | 1657 | g_free(host); |
| 1658 | return 1; | |
| 1659 | } | |
| 1660 | ||
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
1661 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, gaim_connerr, 0); |
| 2675 | 1662 | aim_conn_addhandler(sess, tstconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, conninitdone_chat, 0); |
| 1663 | ||
| 2086 | 1664 | ccon = g_new0(struct chat_connection, 1); |
| 1665 | ccon->conn = tstconn; | |
| 1666 | ccon->gc = gc; | |
| 1667 | ccon->fd = -1; | |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1668 | ccon->name = g_strdup(redir->chat.room); |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1669 | ccon->exchange = redir->chat.exchange; |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1670 | ccon->instance = redir->chat.instance; |
|
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2820
diff
changeset
|
1671 | ccon->show = extract_name(redir->chat.room); |
| 4634 | 1672 | |
| 2086 | 1673 | ccon->conn->status |= AIM_CONN_STATUS_INPROGRESS; |
| 4634 | 1674 | if (proxy_connect(account, host, port, oscar_chat_connect, ccon) != 0) { |
| 2086 | 1675 | aim_conn_kill(sess, &tstconn); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1676 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1677 | "unable to connect to chat server\n"); |
| 2086 | 1678 | g_free(host); |
| 1679 | g_free(ccon->show); | |
| 1680 | g_free(ccon->name); | |
| 1681 | g_free(ccon); | |
| 1682 | return 1; | |
| 1683 | } | |
|
4293
c025f268b6df
[gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents:
4292
diff
changeset
|
1684 | aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1685 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1686 | "Connected to chat room %s exchange %hu\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1687 | ccon->name, ccon->exchange); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
1688 | } break; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1689 | |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1690 | case 0x0010: { /* icon */ |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1691 | if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_ICON, NULL))) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1692 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1693 | "unable to connect to icon server\n"); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1694 | g_free(host); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1695 | return 1; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1696 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1697 | 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
|
1698 | 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
|
1699 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1700 | tstconn->status |= AIM_CONN_STATUS_INPROGRESS; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1701 | if (proxy_connect(account, host, port, oscar_icon_connect, gc) != 0) { |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1702 | aim_conn_kill(sess, &tstconn); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1703 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1704 | "unable to connect to icon server\n"); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1705 | g_free(host); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1706 | return 1; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1707 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1708 | aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1709 | } break; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1710 | |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1711 | case 0x0018: { /* email */ |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1712 | if (!(tstconn = aim_newconn(sess, AIM_CONN_TYPE_EMAIL, NULL))) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1713 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1714 | "unable to connect to email server\n"); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1715 | g_free(host); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1716 | return 1; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1717 | } |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
1718 | 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
|
1719 | 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
|
1720 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1721 | tstconn->status |= AIM_CONN_STATUS_INPROGRESS; |
| 4634 | 1722 | if (proxy_connect(account, host, port, oscar_email_connect, gc) != 0) { |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1723 | aim_conn_kill(sess, &tstconn); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1724 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1725 | "unable to connect to email server\n"); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1726 | g_free(host); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1727 | return 1; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1728 | } |
|
4293
c025f268b6df
[gaim-migrate @ 4546]
Mark Doliner <markdoliner@pidgin.im>
parents:
4292
diff
changeset
|
1729 | aim_sendcookie(sess, tstconn, redir->cookielen, redir->cookie); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1730 | } break; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
1731 | |
| 2086 | 1732 | default: /* huh? */ |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1733 | gaim_debug(GAIM_DEBUG_WARNING, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1734 | "got redirect for unknown service 0x%04hx\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1735 | redir->group); |
| 2086 | 1736 | break; |
| 1737 | } | |
| 1738 | ||
| 1739 | g_free(host); | |
| 1740 | return 1; | |
| 1741 | } | |
| 1742 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1743 | static int gaim_parse_oncoming(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 1744 | GaimConnection *gc = sess->aux_data; |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1745 | struct oscar_data *od = gc->proto_data; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1746 | struct buddyinfo *bi; |
| 2993 | 1747 | time_t time_idle = 0, signon = 0; |
| 1748 | int type = 0; | |
| 1749 | int caps = 0; | |
| 2086 | 1750 | va_list ap; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1751 | aim_userinfo_t *info; |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
1752 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1753 | va_start(ap, fr); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1754 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 1755 | va_end(ap); |
| 1756 | ||
| 2993 | 1757 | if (info->present & AIM_USERINFO_PRESENT_CAPABILITIES) |
| 1758 | caps = info->capabilities; | |
| 3267 | 1759 | if (info->flags & AIM_FLAG_ACTIVEBUDDY) |
| 1760 | type |= UC_AB; | |
| 1761 | ||
|
4766
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
1762 | if (info->present & AIM_USERINFO_PRESENT_FLAGS) { |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
1763 | if (info->flags & AIM_FLAG_UNCONFIRMED) |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
1764 | type |= UC_UNCONFIRMED; |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
1765 | if (info->flags & AIM_FLAG_ADMINISTRATOR) |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
1766 | type |= UC_ADMIN; |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
1767 | if (info->flags & AIM_FLAG_AOL) |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
1768 | type |= UC_AOL; |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
1769 | if (info->flags & AIM_FLAG_FREE) |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
1770 | type |= UC_NORMAL; |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
1771 | if (info->flags & AIM_FLAG_AWAY) |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
1772 | type |= UC_UNAVAILABLE; |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
1773 | if (info->flags & AIM_FLAG_WIRELESS) |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
1774 | type |= UC_WIRELESS; |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
1775 | } |
| 2993 | 1776 | if (info->present & AIM_USERINFO_PRESENT_ICQEXTSTATUS) { |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
1777 | type = (info->icqinfo.status << 16); |
| 3013 | 1778 | if (!(info->icqinfo.status & AIM_ICQ_STATE_CHAT) && |
| 1779 | (info->icqinfo.status != AIM_ICQ_STATE_NORMAL)) { | |
| 2993 | 1780 | type |= UC_UNAVAILABLE; |
| 3013 | 1781 | } |
| 2993 | 1782 | } |
| 1783 | ||
| 1784 | if (caps & AIM_CAPS_ICQ) | |
| 1785 | caps ^= AIM_CAPS_ICQ; | |
| 1786 | ||
| 1787 | if (info->present & AIM_USERINFO_PRESENT_IDLE) { | |
| 2086 | 1788 | time(&time_idle); |
| 1789 | time_idle -= info->idletime*60; | |
| 2993 | 1790 | } |
| 1791 | ||
| 1792 | if (info->present & AIM_USERINFO_PRESENT_SESSIONLEN) | |
| 1793 | signon = time(NULL) - info->sessionlen; | |
| 2086 | 1794 | |
| 5575 | 1795 | if (!aim_sncmp(gaim_account_get_username(gaim_connection_get_account(gc)), info->sn)) |
| 1796 | gaim_connection_set_display_name(gc, info->sn); | |
|
2305
9ba346379088
[gaim-migrate @ 2315]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2303
diff
changeset
|
1797 | |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1798 | bi = g_hash_table_lookup(od->buddyinfo, normalize(info->sn)); |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1799 | if (!bi) { |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1800 | bi = g_new0(struct buddyinfo, 1); |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1801 | g_hash_table_insert(od->buddyinfo, g_strdup(normalize(info->sn)), bi); |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1802 | } |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
1803 | bi->signon = info->onlinesince ? info->onlinesince : (info->sessionlen + time(NULL)); |
|
4829
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
1804 | if (caps) |
|
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
1805 | bi->caps = caps; |
|
4739
7263e3ceab43
[gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents:
4738
diff
changeset
|
1806 | bi->typingnot = FALSE; |
|
7263e3ceab43
[gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents:
4738
diff
changeset
|
1807 | bi->ico_informed = FALSE; |
| 4732 | 1808 | |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
1809 | /* Server stored icon stuff */ |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1810 | if (info->iconcsumlen) { |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1811 | char *b16, *saved_b16; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1812 | struct buddy *b; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1813 | |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1814 | memcpy(bi->iconcsum, info->iconcsum, info->iconcsumlen); |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1815 | bi->iconcsumlen = info->iconcsumlen; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1816 | b16 = tobase16(bi->iconcsum, bi->iconcsumlen); |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1817 | b = gaim_find_buddy(gc->account, info->sn); |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1818 | saved_b16 = gaim_buddy_get_setting(b, "icon_checksum"); |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1819 | if (!b16 || !saved_b16 || strcmp(b16, saved_b16)) { |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1820 | GSList *cur = od->requesticon; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1821 | while (cur && aim_sncmp((char *)cur->data, info->sn)) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1822 | cur = cur->next; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1823 | if (!cur) { |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1824 | od->requesticon = g_slist_append(od->requesticon, strdup(normalize(info->sn))); |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1825 | if (od->icontimer) |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1826 | g_source_remove(od->icontimer); |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1827 | od->icontimer = g_timeout_add(500, gaim_icon_timerfunc, gc); |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1828 | } |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1829 | } |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1830 | free(saved_b16); |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1831 | free(b16); |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1832 | } |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
1833 | |
| 5628 | 1834 | serv_got_update(gc, info->sn, 1, (info->warnlevel/10.0) + 0.5, signon, time_idle, type); |
| 2086 | 1835 | |
| 1836 | return 1; | |
| 1837 | } | |
| 1838 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1839 | static int gaim_parse_offgoing(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 1840 | GaimConnection *gc = sess->aux_data; |
| 2086 | 1841 | va_list ap; |
|
4739
7263e3ceab43
[gaim-migrate @ 5054]
Mark Doliner <markdoliner@pidgin.im>
parents:
4738
diff
changeset
|
1842 | aim_userinfo_t *info; |
| 2086 | 1843 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
1844 | va_start(ap, fr); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
1845 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 1846 | va_end(ap); |
| 1847 | ||
| 4732 | 1848 | serv_got_update(gc, info->sn, 0, 0, 0, 0, 0); |
| 2086 | 1849 | |
| 1850 | return 1; | |
| 1851 | } | |
| 1852 | ||
| 3730 | 1853 | static void cancel_direct_im(struct ask_direct *d) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1854 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "Freeing DirectIM prompts.\n"); |
| 2086 | 1855 | |
| 1856 | g_free(d->sn); | |
| 1857 | g_free(d); | |
| 1858 | } | |
| 1859 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1860 | static void oscar_odc_callback(gpointer data, gint source, GaimInputCondition condition) { |
| 2086 | 1861 | struct direct_im *dim = data; |
| 5575 | 1862 | GaimConnection *gc = dim->gc; |
| 2086 | 1863 | struct oscar_data *od = gc->proto_data; |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
1864 | struct gaim_conversation *cnv; |
| 2086 | 1865 | char buf[256]; |
| 3008 | 1866 | struct sockaddr name; |
| 1867 | socklen_t name_len = 1; | |
| 1868 | ||
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
1869 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 2086 | 1870 | g_free(dim); |
| 1871 | return; | |
| 1872 | } | |
| 1873 | ||
| 1874 | if (source < 0) { | |
| 1875 | g_free(dim); | |
| 1876 | return; | |
| 1877 | } | |
| 1878 | ||
|
4366
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
1879 | dim->conn->fd = source; |
| 2086 | 1880 | aim_conn_completeconnect(od->sess, dim->conn); |
| 4491 | 1881 | if (!(cnv = gaim_find_conversation(dim->name))) |
| 1882 | cnv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, dim->name); | |
| 3008 | 1883 | |
| 1884 | /* This is the best way to see if we're connected or not */ | |
| 1885 | if (getpeername(source, &name, &name_len) == 0) { | |
| 1886 | g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), dim->name); | |
| 1887 | dim->connected = TRUE; | |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
1888 | gaim_conversation_write(cnv, NULL, buf, -1, WFLAG_SYSTEM, time(NULL)); |
| 3008 | 1889 | } |
| 2086 | 1890 | od->direct_ims = g_slist_append(od->direct_ims, dim); |
| 3008 | 1891 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1892 | dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, oscar_callback, dim->conn); |
| 2086 | 1893 | } |
| 1894 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1895 | /* BBB */ |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
1896 | /* |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1897 | * 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
|
1898 | * 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
|
1899 | * 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
|
1900 | */ |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1901 | static int oscar_sendfile_estblsh(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 1902 | GaimConnection *gc = sess->aux_data; |
| 3630 | 1903 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1904 | struct gaim_xfer *xfer; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1905 | struct aim_oft_info *oft_info; |
| 3630 | 1906 | va_list ap; |
| 1907 | aim_conn_t *conn, *listenerconn; | |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1908 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1909 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1910 | "AAA - in oscar_sendfile_estblsh\n"); |
| 3630 | 1911 | va_start(ap, fr); |
| 1912 | conn = va_arg(ap, aim_conn_t *); | |
| 1913 | listenerconn = va_arg(ap, aim_conn_t *); | |
| 1914 | va_end(ap); | |
| 1915 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1916 | if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, listenerconn))) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1917 | return 1; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1918 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1919 | if (!(oft_info = xfer->data)) |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1920 | return 1; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1921 | |
| 3630 | 1922 | /* Stop watching listener conn; watch transfer conn instead */ |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1923 | gaim_input_remove(xfer->watcher); |
| 3630 | 1924 | aim_conn_kill(sess, &listenerconn); |
| 1925 | ||
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1926 | oft_info->conn = conn; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1927 | xfer->fd = oft_info->conn->fd; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1928 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1929 | 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
|
1930 | 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
|
1931 | 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
|
1932 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1933 | /* 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
|
1934 | aim_oft_sendheader(sess, AIM_CB_OFT_PROMPT, oft_info); |
| 3630 | 1935 | |
| 1936 | return 0; | |
| 1937 | } | |
| 1938 | ||
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
1939 | /* |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1940 | * This is the gaim callback passed to proxy_connect when connecting to another AIM |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1941 | * user in order to transfer a file. |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
1942 | */ |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1943 | static void oscar_sendfile_connected(gpointer data, gint source, GaimInputCondition condition) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1944 | struct gaim_xfer *xfer; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1945 | struct aim_oft_info *oft_info; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1946 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1947 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1948 | "AAA - in oscar_sendfile_connected\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1949 | if (!(xfer = data)) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1950 | return; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1951 | if (!(oft_info = xfer->data)) |
| 3630 | 1952 | return; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1953 | if (source < 0) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1954 | return; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1955 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1956 | xfer->fd = source; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1957 | oft_info->conn->fd = source; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1958 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1959 | aim_conn_completeconnect(oft_info->sess, oft_info->conn); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1960 | 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
|
1961 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1962 | /* 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
|
1963 | aim_im_sendch2_sendfile_accept(oft_info->sess, oft_info); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1964 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1965 | return; |
| 3630 | 1966 | } |
| 1967 | ||
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
1968 | /* |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1969 | * 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
|
1970 | * 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
|
1971 | * 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
|
1972 | * get like totally ready to like, receive the file, kay? |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
1973 | */ |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1974 | static int oscar_sendfile_prompt(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 1975 | GaimConnection *gc = sess->aux_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1976 | struct oscar_data *od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1977 | struct gaim_xfer *xfer; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1978 | struct aim_oft_info *oft_info; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1979 | va_list ap; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1980 | aim_conn_t *conn; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1981 | fu8_t *cookie; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1982 | struct aim_fileheader_t *fh; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
1983 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1984 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
1985 | "AAA - in oscar_sendfile_prompt\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1986 | va_start(ap, fr); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1987 | conn = va_arg(ap, aim_conn_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1988 | cookie = va_arg(ap, fu8_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1989 | fh = va_arg(ap, struct aim_fileheader_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1990 | va_end(ap); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1991 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1992 | if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn))) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1993 | return 1; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1994 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
1995 | if (!(oft_info = xfer->data)) |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1996 | return 1; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1997 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1998 | /* We want to stop listening with a normal thingy */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
1999 | gaim_input_remove(xfer->watcher); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2000 | xfer->watcher = 0; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2001 | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2002 | /* They sent us some information about the file they're sending */ |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2003 | memcpy(&oft_info->fh, fh, sizeof(*fh)); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2004 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2005 | /* Fill in the cookie */ |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2006 | memcpy(&oft_info->fh.bcookie, oft_info->cookie, 8); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2007 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2008 | /* 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
|
2009 | 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
|
2010 | gaim_xfer_start(xfer, xfer->fd, NULL, 0); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2011 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2012 | return 0; |
| 3630 | 2013 | } |
| 2014 | ||
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
2015 | /* |
|
4657
24c70a9dec22
[gaim-migrate @ 4968]
Mark Doliner <markdoliner@pidgin.im>
parents:
4656
diff
changeset
|
2016 | * 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
|
2017 | * 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
|
2018 | */ |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2019 | static int oscar_sendfile_ack(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 2020 | GaimConnection *gc = sess->aux_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2021 | struct oscar_data *od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2022 | struct gaim_xfer *xfer; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2023 | va_list ap; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2024 | aim_conn_t *conn; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2025 | fu8_t *cookie; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2026 | struct aim_fileheader_t *fh; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
2027 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2028 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "AAA - in oscar_sendfile_ack\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2029 | va_start(ap, fr); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2030 | conn = va_arg(ap, aim_conn_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2031 | cookie = va_arg(ap, fu8_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2032 | fh = va_arg(ap, struct aim_fileheader_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2033 | va_end(ap); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2034 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2035 | if (!(xfer = oscar_find_xfer_by_cookie(od->file_transfers, cookie))) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2036 | return 1; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2037 | |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
2038 | /* We want to stop listening with a normal thingy */ |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
2039 | gaim_input_remove(xfer->watcher); |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
2040 | xfer->watcher = 0; |
|
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
2041 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2042 | gaim_xfer_start(xfer, xfer->fd, NULL, 0); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2043 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2044 | return 0; |
| 3630 | 2045 | } |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2046 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2047 | /* |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2048 | * 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
|
2049 | * so we can close our direct connection and what not. |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2050 | */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2051 | static int oscar_sendfile_done(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 2052 | GaimConnection *gc = sess->aux_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2053 | struct oscar_data *od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2054 | struct gaim_xfer *xfer; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2055 | va_list ap; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2056 | aim_conn_t *conn; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2057 | fu8_t *cookie; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2058 | struct aim_fileheader_t *fh; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
2059 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2060 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "AAA - in oscar_sendfile_done\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2061 | va_start(ap, fr); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2062 | conn = va_arg(ap, aim_conn_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2063 | cookie = va_arg(ap, fu8_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2064 | fh = va_arg(ap, struct aim_fileheader_t *); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2065 | va_end(ap); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2066 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2067 | if (!(xfer = oscar_find_xfer_by_conn(od->file_transfers, conn))) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2068 | return 1; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2069 | |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
2070 | xfer->fd = conn->fd; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2071 | gaim_xfer_end(xfer); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2072 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2073 | return 0; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2074 | } |
| 3630 | 2075 | |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2076 | static void accept_direct_im(struct ask_direct *d) { |
| 5575 | 2077 | GaimConnection *gc = d->gc; |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2078 | struct oscar_data *od; |
| 2086 | 2079 | struct direct_im *dim; |
| 2945 | 2080 | char *host; int port = 4443; |
|
4366
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
2081 | int i, rc; |
| 2086 | 2082 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
2083 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2084 | cancel_direct_im(d); |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2085 | return; |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2086 | } |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2087 | |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2088 | od = (struct oscar_data *)gc->proto_data; |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2089 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "Accepted DirectIM.\n"); |
| 2086 | 2090 | |
| 2091 | dim = find_direct_im(od, d->sn); | |
| 2092 | if (dim) { | |
| 3730 | 2093 | cancel_direct_im(d); /* 40 */ |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2094 | return; |
| 2086 | 2095 | } |
| 2096 | dim = g_new0(struct direct_im, 1); | |
| 2097 | dim->gc = d->gc; | |
| 2098 | g_snprintf(dim->name, sizeof dim->name, "%s", d->sn); | |
| 2099 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2100 | dim->conn = aim_odc_connect(od->sess, d->sn, NULL, d->cookie); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2101 | if (!dim->conn) { |
| 2086 | 2102 | g_free(dim); |
| 3730 | 2103 | cancel_direct_im(d); |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2104 | return; |
| 2086 | 2105 | } |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2106 | |
| 2086 | 2107 | aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING, |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2108 | gaim_odc_incoming, 0); |
| 2086 | 2109 | aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING, |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2110 | gaim_odc_typing, 0); |
| 3033 | 2111 | aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_IMAGETRANSFER, |
| 2993 | 2112 | gaim_update_ui, 0); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2113 | for (i = 0; i < (int)strlen(d->ip); i++) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2114 | if (d->ip[i] == ':') { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2115 | port = atoi(&(d->ip[i+1])); |
| 2086 | 2116 | break; |
| 2117 | } | |
| 2118 | } | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2119 | host = g_strndup(d->ip, i); |
| 2086 | 2120 | dim->conn->status |= AIM_CONN_STATUS_INPROGRESS; |
| 4634 | 2121 | rc = proxy_connect(gc->account, host, port, oscar_odc_callback, dim); |
| 2086 | 2122 | g_free(host); |
|
4366
d2b52a5ff6fc
[gaim-migrate @ 4632]
Nicolás Lichtmaier <nico@lichtmaier.com.ar>
parents:
4359
diff
changeset
|
2123 | if (rc < 0) { |
| 2086 | 2124 | aim_conn_kill(od->sess, &dim->conn); |
| 2125 | g_free(dim); | |
| 3730 | 2126 | cancel_direct_im(d); |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2127 | return; |
| 2086 | 2128 | } |
| 2129 | ||
| 3730 | 2130 | cancel_direct_im(d); |
| 2086 | 2131 | |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2132 | return; |
| 2086 | 2133 | } |
| 2134 | ||
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
2135 | static int incomingim_chan1(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch1_args *args) { |
| 5575 | 2136 | GaimConnection *gc = sess->aux_data; |
|
3600
776215788f43
[gaim-migrate @ 3702]
Mark Doliner <markdoliner@pidgin.im>
parents:
3596
diff
changeset
|
2137 | struct oscar_data *od = gc->proto_data; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2138 | char *tmp; |
|
2273
b7c08d737d81
[gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2249
diff
changeset
|
2139 | int flags = 0; |
|
3659
95f6d95134cb
[gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents:
3643
diff
changeset
|
2140 | int convlen; |
|
95f6d95134cb
[gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents:
3643
diff
changeset
|
2141 | GError *err = NULL; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2142 | struct buddyinfo *bi; |
| 5575 | 2143 | const char *iconfile; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2144 | |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2145 | bi = g_hash_table_lookup(od->buddyinfo, normalize(userinfo->sn)); |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2146 | if (!bi) { |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2147 | bi = g_new0(struct buddyinfo, 1); |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2148 | g_hash_table_insert(od->buddyinfo, g_strdup(normalize(userinfo->sn)), bi); |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2149 | } |
|
2273
b7c08d737d81
[gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2249
diff
changeset
|
2150 | |
|
b7c08d737d81
[gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2249
diff
changeset
|
2151 | if (args->icbmflags & AIM_IMFLAGS_AWAY) |
|
b7c08d737d81
[gaim-migrate @ 2283]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2249
diff
changeset
|
2152 | flags |= IM_FLAG_AWAY; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2153 | |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2154 | if (args->icbmflags & AIM_IMFLAGS_TYPINGNOT) |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2155 | bi->typingnot = TRUE; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2156 | else |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2157 | bi->typingnot = FALSE; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2158 | |
|
4380
c7c7beab8e56
[gaim-migrate @ 4646]
Mark Doliner <markdoliner@pidgin.im>
parents:
4374
diff
changeset
|
2159 | if ((args->icbmflags & AIM_IMFLAGS_HASICON) && (args->iconlen) && (args->iconsum) && (args->iconstamp)) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2160 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2161 | "%s has an icon\n", userinfo->sn); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2162 | 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
|
2163 | bi->ico_need = TRUE; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2164 | bi->ico_len = args->iconlen; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2165 | bi->ico_csum = args->iconsum; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
2166 | bi->ico_time = args->iconstamp; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2167 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2168 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2169 | |
| 5575 | 2170 | if ((iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc))) && |
| 2171 | (args->icbmflags & AIM_IMFLAGS_BUDDYREQ)) { | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2172 | FILE *file; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2173 | struct stat st; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2174 | |
| 5575 | 2175 | if (!stat(iconfile, &st)) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2176 | char *buf = g_malloc(st.st_size); |
| 5575 | 2177 | file = fopen(iconfile, "rb"); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2178 | if (file) { |
|
2603
0c39616168c9
[gaim-migrate @ 2616]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2597
diff
changeset
|
2179 | int len = fread(buf, 1, st.st_size, file); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2180 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2181 | "Sending buddy icon to %s (%d bytes, " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2182 | "%lu reported)\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2183 | userinfo->sn, len, st.st_size); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2184 | aim_im_sendch2_icon(sess, userinfo->sn, buf, st.st_size, |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2185 | st.st_mtime, aimutil_iconsum(buf, st.st_size)); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2186 | fclose(file); |
|
2336
43d65c408209
[gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
2187 | } else |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2188 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2189 | "Can't open buddy icon file!\n"); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2190 | g_free(buf); |
|
2336
43d65c408209
[gaim-migrate @ 2349]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2315
diff
changeset
|
2191 | } else |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2192 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2193 | "Can't stat buddy icon file!\n"); |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2194 | } |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2195 | |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2196 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2197 | "Character set is %hu %hu\n", args->charset, args->charsubset); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2198 | if (args->icbmflags & AIM_IMFLAGS_UNICODE) { |
| 3722 | 2199 | /* This message is marked as UNICODE, so we have to |
| 2200 | * convert it to utf-8 before handing it to the gaim core. | |
| 2201 | * This conversion should *never* fail, if it does it | |
| 2202 | * means that either the incoming ICBM is corrupted or | |
|
4662
740f32459759
[gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents:
4657
diff
changeset
|
2203 | * there is something we don't understand about it. |
|
740f32459759
[gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents:
4657
diff
changeset
|
2204 | * For the record, AIM Unicode is big-endian UCS-2 */ |
|
740f32459759
[gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents:
4657
diff
changeset
|
2205 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2206 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "Received UNICODE IM\n"); |
| 4121 | 2207 | |
| 2208 | if (!args->msg || !args->msglen) | |
| 2209 | return 1; | |
|
4641
bcc6f5e3018a
[gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents:
4634
diff
changeset
|
2210 | |
|
3659
95f6d95134cb
[gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents:
3643
diff
changeset
|
2211 | tmp = g_convert(args->msg, args->msglen, "UTF-8", "UCS-2BE", NULL, &convlen, &err); |
|
95f6d95134cb
[gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents:
3643
diff
changeset
|
2212 | if (err) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2213 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2214 | "Unicode IM conversion: %s\n", err->message); |
|
3659
95f6d95134cb
[gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents:
3643
diff
changeset
|
2215 | tmp = strdup(_("(There was an error receiving this message)")); |
| 4800 | 2216 | g_error_free(err); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2217 | } |
| 3722 | 2218 | } else { |
| 3850 | 2219 | /* This will get executed for both AIM_IMFLAGS_ISO_8859_1 and |
| 3722 | 2220 | * unflagged messages, which are ASCII. That's OK because |
| 2221 | * ASCII is a strict subset of ISO-8859-1; this should | |
| 2222 | * help with compatibility with old, broken versions of | |
| 2223 | * gaim (everything before 0.60) and other broken clients | |
| 2224 | * that will happily send ISO-8859-1 without marking it as | |
| 2225 | * such */ | |
|
4662
740f32459759
[gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents:
4657
diff
changeset
|
2226 | if (args->icbmflags & AIM_IMFLAGS_ISO_8859_1) |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2227 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2228 | "Received ISO-8859-1 IM\n"); |
| 4121 | 2229 | |
| 2230 | if (!args->msg || !args->msglen) | |
| 2231 | return 1; | |
| 2232 | ||
|
3659
95f6d95134cb
[gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents:
3643
diff
changeset
|
2233 | tmp = g_convert(args->msg, args->msglen, "UTF-8", "ISO-8859-1", NULL, &convlen, &err); |
|
95f6d95134cb
[gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents:
3643
diff
changeset
|
2234 | if (err) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2235 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2236 | "ISO-8859-1 IM conversion: %s\n", err->message); |
|
3659
95f6d95134cb
[gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents:
3643
diff
changeset
|
2237 | tmp = strdup(_("(There was an error receiving this message)")); |
| 4800 | 2238 | g_error_free(err); |
|
3659
95f6d95134cb
[gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents:
3643
diff
changeset
|
2239 | } |
| 3642 | 2240 | } |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2241 | |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
2242 | /* strip_linefeed(tmp); */ |
|
2856
046ed5e89321
[gaim-migrate @ 2869]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2833
diff
changeset
|
2243 | serv_got_im(gc, userinfo->sn, tmp, flags, time(NULL), -1); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2244 | g_free(tmp); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2245 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2246 | return 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2247 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2248 | |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
2249 | static int incomingim_chan2(aim_session_t *sess, aim_conn_t *conn, aim_userinfo_t *userinfo, struct aim_incomingim_ch2_args *args) { |
| 5575 | 2250 | GaimConnection *gc = sess->aux_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2251 | struct oscar_data *od = gc->proto_data; |
| 5575 | 2252 | const char *username = gaim_account_get_username(gaim_connection_get_account(gc)); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2253 | |
| 4121 | 2254 | if (!args) |
| 2255 | return 0; | |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
2256 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2257 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2258 | "rendezvous with %s, status is %hu\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2259 | userinfo->sn, args->status); |
| 2869 | 2260 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2261 | if (args->reqclass & AIM_CAPS_CHAT) { |
| 4121 | 2262 | char *name; |
| 5234 | 2263 | GHashTable *components; |
| 2264 | ||
| 4121 | 2265 | if (!args->info.chat.roominfo.name || !args->info.chat.roominfo.exchange || !args->msg) |
| 2266 | return 1; | |
| 5234 | 2267 | components = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, |
| 2268 | g_free); | |
| 4121 | 2269 | name = extract_name(args->info.chat.roominfo.name); |
| 5234 | 2270 | g_hash_table_replace(components, g_strdup("room"), g_strdup(name ? name : args->info.chat.roominfo.name)); |
| 2271 | 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
|
2272 | serv_got_chat_invite(gc, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2273 | name ? name : args->info.chat.roominfo.name, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2274 | userinfo->sn, |
| 2869 | 2275 | (char *)args->msg, |
| 5234 | 2276 | components); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2277 | if (name) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2278 | g_free(name); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2279 | } else if (args->reqclass & AIM_CAPS_SENDFILE) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2280 | /* BBB */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2281 | if (args->status == AIM_RENDEZVOUS_PROPOSE) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2282 | /* Someone wants to send a file (or files) to us */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2283 | struct gaim_xfer *xfer; |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2284 | struct aim_oft_info *oft_info; |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2285 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2286 | if (!args->cookie || !args->port || !args->verifiedip || |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2287 | !args->info.sendfile.filename || !args->info.sendfile.totsize || |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
2288 | !args->info.sendfile.totfiles || !args->reqclass) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2289 | gaim_debug(GAIM_DEBUG_WARNING, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2290 | "%s tried to send you a file with incomplete " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2291 | "information.\n", userinfo->sn); |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2292 | if (args->proxyip) |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2293 | gaim_debug(GAIM_DEBUG_WARNING, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2294 | "IP for a proxy server was given. Gaim " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2295 | "does not support this yet.\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2296 | return 1; |
|
4656
b676f986e7e3
[gaim-migrate @ 4967]
Mark Doliner <markdoliner@pidgin.im>
parents:
4652
diff
changeset
|
2297 | } |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2298 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2299 | if (args->info.sendfile.subtype == AIM_OFT_SUBTYPE_SEND_DIR) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2300 | /* last char of the ft req is a star, they are sending us a |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2301 | * directory -- remove the star and trailing slash so we dont save |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2302 | * directories that look like 'dirname\*' -- arl */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2303 | char *tmp = strrchr(args->info.sendfile.filename, '\\'); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2304 | if (tmp && (tmp[1] == '*')) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2305 | tmp[0] = '\0'; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2306 | } |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2307 | } |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2308 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2309 | /* Build the file transfer handle */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2310 | 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
|
2311 | xfer->remote_ip = g_strdup(args->verifiedip); |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2312 | xfer->remote_port = args->port; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2313 | gaim_xfer_set_filename(xfer, args->info.sendfile.filename); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2314 | gaim_xfer_set_size(xfer, args->info.sendfile.totsize); |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2315 | |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2316 | /* Create the oscar-specific data */ |
|
5163
c4e7e5cde47d
[gaim-migrate @ 5527]
Mark Doliner <markdoliner@pidgin.im>
parents:
5149
diff
changeset
|
2317 | 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
|
2318 | if (args->proxyip) |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2319 | oft_info->proxyip = g_strdup(args->proxyip); |
|
4898
285e9ff6eeb8
[gaim-migrate @ 5230]
Mark Doliner <markdoliner@pidgin.im>
parents:
4889
diff
changeset
|
2320 | if (args->verifiedip) |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2321 | oft_info->verifiedip = g_strdup(args->verifiedip); |
|
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
2322 | xfer->data = oft_info; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2323 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2324 | /* Setup our I/O op functions */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2325 | gaim_xfer_set_init_fnc(xfer, oscar_xfer_init); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2326 | gaim_xfer_set_start_fnc(xfer, oscar_xfer_start); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2327 | gaim_xfer_set_end_fnc(xfer, oscar_xfer_end); |
|
4675
8e0a7b537ca2
[gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents:
4666
diff
changeset
|
2328 | gaim_xfer_set_cancel_send_fnc(xfer, oscar_xfer_cancel_send); |
|
8e0a7b537ca2
[gaim-migrate @ 4986]
Christian Hammond <chipx86@chipx86.com>
parents:
4666
diff
changeset
|
2329 | gaim_xfer_set_cancel_recv_fnc(xfer, oscar_xfer_cancel_recv); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2330 | gaim_xfer_set_ack_fnc(xfer, oscar_xfer_ack); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2331 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2332 | /* |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2333 | * XXX - Should do something with args->msg, args->encoding, and args->language |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2334 | * probably make it apply to all ch2 messages. |
| 3752 | 2335 | */ |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2336 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2337 | /* Keep track of this transfer for later */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2338 | od->file_transfers = g_slist_append(od->file_transfers, xfer); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2339 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2340 | /* Now perform the request */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2341 | gaim_xfer_request(xfer); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2342 | } else if (args->status == AIM_RENDEZVOUS_CANCEL) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2343 | /* The other user wants to cancel a file transfer */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2344 | struct gaim_xfer *xfer; |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2345 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2346 | "AAA - File transfer canceled by remote user\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2347 | 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
|
2348 | gaim_xfer_cancel_remote(xfer); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2349 | } else if (args->status == AIM_RENDEZVOUS_ACCEPT) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2350 | /* |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2351 | * This gets sent by the receiver of a file |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2352 | * as they connect directly to us. If we don't |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2353 | * get this, then maybe a third party connected |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2354 | * to us, and we shouldn't send them anything. |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2355 | */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2356 | } else { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2357 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2358 | "unknown rendezvous status!\n"); |
| 3630 | 2359 | } |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2360 | } else if (args->reqclass & AIM_CAPS_GETFILE) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2361 | } else if (args->reqclass & AIM_CAPS_VOICE) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2362 | } else if (args->reqclass & AIM_CAPS_BUDDYICON) { |
| 4799 | 2363 | set_icon_data(gc, userinfo->sn, args->info.icon.icon, |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2364 | args->info.icon.length); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2365 | } else if (args->reqclass & AIM_CAPS_IMIMAGE) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2366 | struct ask_direct *d = g_new0(struct ask_direct, 1); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2367 | char buf[256]; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2368 | |
| 4212 | 2369 | if (!args->verifiedip) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2370 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2371 | "directim kill blocked (%s)\n", userinfo->sn); |
|
4650
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4649
diff
changeset
|
2372 | return 1; |
| 4212 | 2373 | } |
| 2374 | ||
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2375 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2376 | "%s received direct im request from %s (%s)\n", |
| 5575 | 2377 | username, userinfo->sn, args->verifiedip); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2378 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2379 | d->gc = gc; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2380 | d->sn = g_strdup(userinfo->sn); |
| 2869 | 2381 | strncpy(d->ip, args->verifiedip, sizeof(d->ip)); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2382 | memcpy(d->cookie, args->cookie, 8); |
| 5575 | 2383 | 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
|
2384 | |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2385 | gaim_request_action(gc, NULL, buf, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2386 | _("This requires a direct connection between " |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2387 | "the two computers and is necessary for IM " |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2388 | "Images. Because your IP address will be " |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2389 | "revealed, this may be considered a privacy " |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2390 | "risk."), 0, d, 2, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2391 | _("Connect"), G_CALLBACK(accept_direct_im), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2392 | _("Cancel"), G_CALLBACK(cancel_direct_im)); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2393 | } else { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2394 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2395 | "Unknown reqclass %hu\n", args->reqclass); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2396 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2397 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2398 | return 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2399 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2400 | |
| 3453 | 2401 | /* |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2402 | * Authorization Functions |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2403 | * 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
|
2404 | * methods of authorization (SSI and old-school channel 4 ICBM) |
| 3453 | 2405 | */ |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
2406 | /* When you ask other people for authorization */ |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2407 | static void gaim_auth_request(struct name_data *data, char *msg) { |
| 5575 | 2408 | GaimConnection *gc = data->gc; |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2409 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
2410 | if (g_list_find(gaim_connections_get_all(), gc)) { |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2411 | struct oscar_data *od = gc->proto_data; |
| 4687 | 2412 | struct buddy *buddy = gaim_find_buddy(gc->account, data->name); |
| 2413 | struct group *group = gaim_find_buddys_group(buddy); | |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2414 | if (buddy && group) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2415 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2416 | "ssi: adding buddy %s to group %s\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2417 | buddy->name, group->name); |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
2418 | 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
|
2419 | if (!aim_ssi_itemlist_finditem(od->sess->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY)) |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
2420 | aim_ssi_addbuddy(od->sess, buddy->name, group->name, gaim_get_buddy_alias_only(buddy), NULL, NULL, 1); |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2421 | } |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2422 | } |
|
4337
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
2423 | } |
|
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
2424 | |
|
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
2425 | static void gaim_auth_request_msgprompt(struct name_data *data) { |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
2426 | gaim_request_input(data->gc, NULL, _("Authorization Request Message:"), |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
2427 | NULL, _("Please authorize me!"), TRUE, |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
2428 | _("OK"), G_CALLBACK(gaim_auth_request), |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
2429 | _("Cancel"), G_CALLBACK(gaim_free_name_data), |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
2430 | data); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2431 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2432 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2433 | static void gaim_auth_dontrequest(struct name_data *data) { |
| 5575 | 2434 | GaimConnection *gc = data->gc; |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2435 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
2436 | if (g_list_find(gaim_connections_get_all(), gc)) { |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2437 | /* struct oscar_data *od = gc->proto_data; */ |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2438 | /* XXX - Take the buddy out of our buddy list */ |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2439 | } |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2440 | |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2441 | gaim_free_name_data(data); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2442 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2443 | |
| 5575 | 2444 | static void gaim_auth_sendrequest(GaimConnection *gc, const char *name) { |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
2445 | struct name_data *data = g_new(struct name_data, 1); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
2446 | struct buddy *buddy; |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
2447 | gchar *dialog_msg, *nombre; |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
2448 | |
| 4687 | 2449 | buddy = gaim_find_buddy(gc->account, name); |
| 2450 | if (buddy && (gaim_get_buddy_alias_only(buddy))) | |
| 2451 | nombre = g_strdup_printf("%s (%s)", name, gaim_get_buddy_alias_only(buddy)); | |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
2452 | else |
|
4830
d0f1945b27b7
[gaim-migrate @ 5155]
Mark Doliner <markdoliner@pidgin.im>
parents:
4829
diff
changeset
|
2453 | nombre = NULL; |
|
d0f1945b27b7
[gaim-migrate @ 5155]
Mark Doliner <markdoliner@pidgin.im>
parents:
4829
diff
changeset
|
2454 | |
|
d0f1945b27b7
[gaim-migrate @ 5155]
Mark Doliner <markdoliner@pidgin.im>
parents:
4829
diff
changeset
|
2455 | 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
|
2456 | data->gc = gc; |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
2457 | data->name = g_strdup(name); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
2458 | data->nick = NULL; |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2459 | |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2460 | gaim_request_action(gc, NULL, _("Request Authorization"), dialog_msg, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2461 | 0, data, 2, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2462 | _("Request Authorization"), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2463 | G_CALLBACK(gaim_auth_request_msgprompt), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2464 | _("Cancel"), G_CALLBACK(gaim_auth_dontrequest)); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
2465 | |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
2466 | g_free(dialog_msg); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
2467 | g_free(nombre); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
2468 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
2469 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2470 | /* When other people ask you for authorization */ |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2471 | static void gaim_auth_grant(struct name_data *data) { |
| 5575 | 2472 | GaimConnection *gc = data->gc; |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2473 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
2474 | if (g_list_find(gaim_connections_get_all(), gc)) { |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2475 | struct oscar_data *od = gc->proto_data; |
| 4236 | 2476 | #ifdef NOSSI |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2477 | struct buddy *buddy; |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2478 | gchar message; |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2479 | message = 0; |
| 4687 | 2480 | buddy = gaim_find_buddy(gc->account, data->name); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2481 | aim_im_sendch4(od->sess, data->name, AIM_ICQMSG_AUTHGRANTED, &message); |
| 4687 | 2482 | show_got_added(gc, NULL, data->name, (buddy ? gaim_get_buddy_alias_only(buddy) : NULL), NULL); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2483 | #else |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
2484 | aim_ssi_sendauthreply(od->sess, data->name, 0x01, NULL); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2485 | #endif |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2486 | } |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2487 | |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2488 | gaim_free_name_data(data); |
| 3141 | 2489 | } |
| 2490 | ||
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2491 | /* When other people ask you for authorization */ |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2492 | static void gaim_auth_dontgrant(struct name_data *data, char *msg) { |
| 5575 | 2493 | GaimConnection *gc = data->gc; |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2494 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
2495 | if (g_list_find(gaim_connections_get_all(), gc)) { |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2496 | struct oscar_data *od = gc->proto_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2497 | #ifdef NOSSI |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2498 | 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
|
2499 | #else |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
2500 | 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
|
2501 | #endif |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2502 | } |
|
4337
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
2503 | } |
|
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
2504 | |
|
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
2505 | static void gaim_auth_dontgrant_msgprompt(struct name_data *data) { |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
2506 | gaim_request_input(data->gc, NULL, _("Authorization Denied Message:"), |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
2507 | NULL, _("No reason given."), TRUE, |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
2508 | _("OK"), G_CALLBACK(gaim_auth_dontgrant), |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
2509 | _("Cancel"), G_CALLBACK(gaim_free_name_data), |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
2510 | data); |
| 3141 | 2511 | } |
| 2512 | ||
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2513 | /* When someone sends you contacts */ |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2514 | static void gaim_icq_contactadd(struct name_data *data) { |
| 5575 | 2515 | GaimConnection *gc = data->gc; |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2516 | |
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
2517 | if (g_list_find(gaim_connections_get_all(), gc)) { |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2518 | show_add_buddy(gc, data->name, NULL, data->nick); |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2519 | } |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
2520 | |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2521 | gaim_free_name_data(data); |
| 3453 | 2522 | } |
| 2523 | ||
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
2524 | 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 | 2525 | GaimConnection *gc = sess->aux_data; |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2526 | gchar **msg1, **msg2; |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2527 | GError *err = NULL; |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2528 | int i; |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2529 | |
| 4121 | 2530 | if (!args->type || !args->msg || !args->uin) |
| 2531 | return 1; | |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
2532 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2533 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2534 | "Received a channel 4 message of type 0x%02hhx.\n", args->type); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2535 | |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2536 | /* Split up the message at the delimeter character, then convert each string to UTF-8 */ |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2537 | msg1 = g_strsplit(args->msg, "\376", 0); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
2538 | msg2 = (gchar **)g_malloc(10*sizeof(gchar *)); /* XXX - 10 is a guess */ |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2539 | for (i=0; msg1[i]; i++) { |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2540 | strip_linefeed(msg1[i]); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2541 | msg2[i] = g_convert(msg1[i], strlen(msg1[i]), "UTF-8", "ISO-8859-1", NULL, NULL, &err); |
| 4800 | 2542 | if (err) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2543 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2544 | "Error converting a string from ISO-8859-1 to " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2545 | "UTF-8 in oscar ICBM channel 4 parsing\n"); |
| 4800 | 2546 | g_error_free(err); |
| 2547 | } | |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2548 | } |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2549 | msg2[i] = NULL; |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2550 | |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
2551 | switch (args->type) { |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2552 | case 0x01: { /* MacICQ message or basic offline message */ |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2553 | if (i >= 1) { |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
2554 | gchar *uin = g_strdup_printf("%u", args->uin); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2555 | if (t) { /* This is an offline message */ |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2556 | /* I think this timestamp is in UTC, or something */ |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2557 | serv_got_im(gc, uin, msg2[0], 0, t, -1); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2558 | } else { /* This is a message from MacICQ/Miranda */ |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2559 | serv_got_im(gc, uin, msg2[0], 0, time(NULL), -1); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2560 | } |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2561 | g_free(uin); |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
2562 | } |
|
3316
43bb95f6167a
[gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents:
3279
diff
changeset
|
2563 | } break; |
|
43bb95f6167a
[gaim-migrate @ 3334]
Mark Doliner <markdoliner@pidgin.im>
parents:
3279
diff
changeset
|
2564 | |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2565 | case 0x04: { /* Someone sent you a URL */ |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2566 | if (i >= 2) { |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
2567 | gchar *uin = g_strdup_printf("%u", args->uin); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2568 | gchar *message = g_strdup_printf("<A HREF=\"%s\">%s</A>", msg2[1], msg2[0]); |
| 3453 | 2569 | serv_got_im(gc, uin, message, 0, time(NULL), -1); |
| 2570 | g_free(uin); | |
| 2571 | g_free(message); | |
| 2572 | } | |
| 2573 | } break; | |
| 2574 | ||
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2575 | case 0x06: { /* Someone requested authorization */ |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2576 | if (i >= 6) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2577 | struct name_data *data = g_new(struct name_data, 1); |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
2578 | 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.")); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2579 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
2580 | "Received an authorization request from UIN %u\n", |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2581 | args->uin); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2582 | data->gc = gc; |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
2583 | data->name = g_strdup_printf("%u", args->uin); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2584 | data->nick = NULL; |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2585 | |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2586 | gaim_request_action(gc, NULL, _("Authorization Request"), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2587 | dialog_msg, 0, data, 2, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2588 | _("Authorize"), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2589 | G_CALLBACK(gaim_auth_grant), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2590 | _("Deny"), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2591 | G_CALLBACK(gaim_auth_dontgrant_msgprompt)); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2592 | g_free(dialog_msg); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2593 | } |
| 3141 | 2594 | } break; |
| 2595 | ||
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2596 | case 0x07: { /* Someone has denied you authorization */ |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2597 | if (i >= 1) { |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
2598 | gchar *dialog_msg = g_strdup_printf(_("The user %u has denied your request to add them to your contact list for the following reason:\n%s"), args->uin, msg2[0] ? msg2[0] : _("No reason given.")); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
2599 | gaim_notify_info(gc, NULL, _("ICQ authorization denied."), |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
2600 | dialog_msg); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2601 | g_free(dialog_msg); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2602 | } |
| 3141 | 2603 | } break; |
| 2604 | ||
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2605 | case 0x08: { /* Someone has granted you authorization */ |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
2606 | gchar *dialog_msg = g_strdup_printf(_("The user %u has granted your request to add them to your contact list."), args->uin); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
2607 | gaim_notify_info(gc, NULL, "ICQ authorization accepted.", |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
2608 | dialog_msg); |
| 3141 | 2609 | g_free(dialog_msg); |
| 2610 | } break; | |
| 2611 | ||
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
2612 | case 0x09: { /* Message from the Godly ICQ server itself, I think */ |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
2613 | if (i >= 5) { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
2614 | 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
|
2615 | gaim_notify_info(gc, NULL, "ICQ Server Message", dialog_msg); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
2616 | g_free(dialog_msg); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
2617 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
2618 | } break; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
2619 | |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2620 | 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
|
2621 | if (i >= 6) { |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
2622 | 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
|
2623 | gaim_notify_info(gc, NULL, "ICQ Page", dialog_msg); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2624 | g_free(dialog_msg); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2625 | } |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
2626 | } break; |
|
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
2627 | |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2628 | 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
|
2629 | if (i >= 6) { |
|
4308
8eefe9f67895
[gaim-migrate @ 4562]
Mark Doliner <markdoliner@pidgin.im>
parents:
4303
diff
changeset
|
2630 | 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
|
2631 | gaim_notify_info(gc, NULL, "ICQ Email", dialog_msg); |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2632 | g_free(dialog_msg); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2633 | } |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
2634 | } break; |
|
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
2635 | |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2636 | case 0x12: { |
| 3141 | 2637 | /* Ack for authorizing/denying someone. Or possibly an ack for sending any system notice */ |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2638 | /* Someone added you to their contact list? */ |
| 3141 | 2639 | } break; |
| 2640 | ||
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2641 | case 0x13: { /* Someone has sent you some ICQ contacts */ |
| 3453 | 2642 | int i, num; |
| 2643 | gchar **text; | |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2644 | text = g_strsplit(args->msg, "\376", 0); |
| 3453 | 2645 | if (text) { |
| 2646 | num = 0; | |
| 2647 | for (i=0; i<strlen(text[0]); i++) | |
| 2648 | num = num*10 + text[0][i]-48; | |
| 2649 | for (i=0; i<num; i++) { | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
2650 | struct name_data *data = g_new(struct name_data, 1); |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
2651 | gchar *message = g_strdup_printf(_("ICQ user %u has sent you a contact: %s (%s)"), args->uin, text[i*2+2], text[i*2+1]); |
| 3453 | 2652 | data->gc = gc; |
|
4790
765a98790ede
[gaim-migrate @ 5110]
Mark Doliner <markdoliner@pidgin.im>
parents:
4785
diff
changeset
|
2653 | data->name = g_strdup(text[i*2+1]); |
|
765a98790ede
[gaim-migrate @ 5110]
Mark Doliner <markdoliner@pidgin.im>
parents:
4785
diff
changeset
|
2654 | data->nick = g_strdup(text[i*2+2]); |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2655 | |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2656 | gaim_request_action(gc, NULL, message, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2657 | _("Do you want to add this contact " |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2658 | "to your Buddy List?"), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2659 | 0, data, 2, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2660 | _("Add"), G_CALLBACK(gaim_icq_contactadd), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
2661 | _("Decline"), G_CALLBACK(gaim_free_name_data)); |
| 3453 | 2662 | g_free(message); |
| 2663 | } | |
| 2664 | g_strfreev(text); | |
| 2665 | } | |
| 2666 | } break; | |
| 2667 | ||
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
2668 | case 0x1a: { /* Someone has sent you a greeting card or requested contacts? */ |
| 3453 | 2669 | /* This is boring and silly. */ |
| 2670 | } break; | |
| 2671 | ||
| 3141 | 2672 | default: { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2673 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2674 | "Received a channel 4 message of unknown type " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2675 | "(type 0x%02hhx).\n", args->type); |
| 3141 | 2676 | } break; |
| 2677 | } | |
| 2678 | ||
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2679 | g_strfreev(msg1); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2680 | g_strfreev(msg2); |
|
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
2681 | |
| 3141 | 2682 | return 1; |
| 2683 | } | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2684 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2685 | 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
|
2686 | fu16_t channel; |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
2687 | int ret = 0; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
2688 | aim_userinfo_t *userinfo; |
| 2086 | 2689 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2690 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2691 | va_start(ap, fr); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
2692 | channel = (fu16_t)va_arg(ap, unsigned int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
2693 | userinfo = va_arg(ap, aim_userinfo_t *); |
| 2086 | 2694 | |
| 3141 | 2695 | switch (channel) { |
| 2696 | case 1: { /* standard message */ | |
| 2697 | struct aim_incomingim_ch1_args *args; | |
| 2698 | args = va_arg(ap, struct aim_incomingim_ch1_args *); | |
| 2699 | ret = incomingim_chan1(sess, fr->conn, userinfo, args); | |
| 2700 | } break; | |
| 2701 | ||
| 2702 | case 2: { /* rendevous */ | |
| 2703 | struct aim_incomingim_ch2_args *args; | |
| 2704 | args = va_arg(ap, struct aim_incomingim_ch2_args *); | |
| 2705 | ret = incomingim_chan2(sess, fr->conn, userinfo, args); | |
| 2706 | } break; | |
| 2707 | ||
| 2708 | case 4: { /* ICQ */ | |
| 2709 | struct aim_incomingim_ch4_args *args; | |
| 2710 | args = va_arg(ap, struct aim_incomingim_ch4_args *); | |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
2711 | ret = incomingim_chan4(sess, fr->conn, userinfo, args, 0); |
| 3141 | 2712 | } break; |
| 2713 | ||
| 2714 | default: { | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2715 | gaim_debug(GAIM_DEBUG_WARNING, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2716 | "ICBM received on unsupported channel (channel " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2717 | "0x%04hx).", channel); |
| 3141 | 2718 | } break; |
| 2086 | 2719 | } |
| 2720 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2721 | va_end(ap); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2722 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2723 | return ret; |
| 2086 | 2724 | } |
| 2725 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2726 | static int gaim_parse_misses(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2727 | char *buf; |
| 2086 | 2728 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2729 | fu16_t chan, nummissed, reason; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
2730 | aim_userinfo_t *userinfo; |
| 2086 | 2731 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2732 | va_start(ap, fr); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
2733 | chan = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
2734 | userinfo = va_arg(ap, aim_userinfo_t *); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
2735 | nummissed = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
2736 | reason = (fu16_t)va_arg(ap, unsigned int); |
| 2086 | 2737 | va_end(ap); |
| 2738 | ||
| 2739 | switch(reason) { | |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2740 | case 0: /* Invalid (0) */ |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2741 | buf = g_strdup_printf( |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2742 | ngettext( |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2743 | "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
|
2744 | "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
|
2745 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2746 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2747 | userinfo->sn); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2748 | break; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2749 | case 1: /* Message too large */ |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2750 | buf = g_strdup_printf( |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2751 | ngettext( |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2752 | "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
|
2753 | "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
|
2754 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2755 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2756 | userinfo->sn); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2757 | break; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2758 | case 2: /* Rate exceeded */ |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2759 | buf = g_strdup_printf( |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2760 | ngettext( |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2761 | "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
|
2762 | "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
|
2763 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2764 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2765 | userinfo->sn); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2766 | break; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2767 | case 3: /* Evil Sender */ |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2768 | buf = g_strdup_printf( |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2769 | ngettext( |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2770 | "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
|
2771 | "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
|
2772 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2773 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2774 | userinfo->sn); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
2775 | break; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2776 | case 4: /* Evil Receiver */ |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2777 | buf = g_strdup_printf( |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2778 | ngettext( |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2779 | "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
|
2780 | "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
|
2781 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2782 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2783 | userinfo->sn); |
| 2086 | 2784 | break; |
| 2785 | default: | |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2786 | buf = g_strdup_printf( |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2787 | ngettext( |
|
4276
d1652a291840
[gaim-migrate @ 4527]
Éric Boumaour <eric.boumaour_pidgin@m4x.org>
parents:
4269
diff
changeset
|
2788 | "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
|
2789 | "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
|
2790 | nummissed), |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2791 | nummissed, |
|
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
2792 | userinfo->sn); |
| 2086 | 2793 | break; |
| 2794 | } | |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
2795 | gaim_notify_error(sess->aux_data, NULL, buf, NULL); |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
2796 | g_free(buf); |
| 2086 | 2797 | |
| 2798 | return 1; | |
| 2799 | } | |
| 2800 | ||
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2801 | static char *gaim_icq_status(int state) { |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2802 | /* Make a cute little string that shows the status of the dude or dudet */ |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2803 | if (state & AIM_ICQ_STATE_CHAT) |
| 4342 | 2804 | return g_strdup_printf(_("Free For Chat")); |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2805 | else if (state & AIM_ICQ_STATE_DND) |
| 4342 | 2806 | return g_strdup_printf(_("Do Not Disturb")); |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2807 | else if (state & AIM_ICQ_STATE_OUT) |
| 4342 | 2808 | return g_strdup_printf(_("Not Available")); |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2809 | else if (state & AIM_ICQ_STATE_BUSY) |
| 4342 | 2810 | return g_strdup_printf(_("Occupied")); |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2811 | else if (state & AIM_ICQ_STATE_AWAY) |
| 4342 | 2812 | return g_strdup_printf(_("Away")); |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2813 | else if (state & AIM_ICQ_STATE_WEBAWARE) |
| 4342 | 2814 | return g_strdup_printf(_("Web Aware")); |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2815 | else if (state & AIM_ICQ_STATE_INVISIBLE) |
| 4342 | 2816 | return g_strdup_printf(_("Invisible")); |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2817 | else |
| 4342 | 2818 | return g_strdup_printf(_("Online")); |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2819 | } |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2820 | |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
2821 | static int gaim_parse_clientauto_ch2(aim_session_t *sess, const char *who, fu16_t reason, const char *cookie) { |
| 5575 | 2822 | GaimConnection *gc = sess->aux_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2823 | struct oscar_data *od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2824 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2825 | /* BBB */ |
| 3630 | 2826 | switch (reason) { |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2827 | case 3: { /* Decline sendfile. */ |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2828 | struct gaim_xfer *xfer; |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2829 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2830 | "AAA - Other user declined file transfer\n"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2831 | 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
|
2832 | gaim_xfer_cancel_remote(xfer); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2833 | } break; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2834 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2835 | default: { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2836 | gaim_debug(GAIM_DEBUG_WARNING, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2837 | "Received an unknown rendezvous client auto-response " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2838 | "from %s. Type 0x%04hx\n", who, reason); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2839 | } |
| 3630 | 2840 | |
| 2841 | } | |
| 2842 | ||
| 2843 | return 0; | |
| 2844 | } | |
| 2845 | ||
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
2846 | static int gaim_parse_clientauto_ch4(aim_session_t *sess, char *who, fu16_t reason, fu32_t state, char *msg) { |
| 5575 | 2847 | GaimConnection *gc = sess->aux_data; |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2848 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2849 | switch(reason) { |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2850 | case 0x0003: { /* Reply from an ICQ status message request */ |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2851 | char *status_msg = gaim_icq_status(state); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2852 | char *dialog_msg, **splitmsg; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2853 | struct oscar_data *od = gc->proto_data; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2854 | GSList *l = od->evilhack; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2855 | gboolean evilhack = FALSE; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2856 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2857 | /* Split at (carriage return/newline)'s, then rejoin later with BRs between. */ |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2858 | splitmsg = g_strsplit(msg, "\r\n", 0); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2859 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2860 | /* If who is in od->evilhack, then we're just getting the away message, otherwise this |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2861 | * will just get appended to the info box (which is already showing). */ |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2862 | while (l) { |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2863 | char *x = l->data; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2864 | if (!strcmp(x, normalize(who))) { |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2865 | evilhack = TRUE; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2866 | g_free(x); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2867 | od->evilhack = g_slist_remove(od->evilhack, x); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2868 | break; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2869 | } |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2870 | l = l->next; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2871 | } |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2872 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2873 | if (evilhack) |
|
4344
01db0d9079ea
[gaim-migrate @ 4609]
Mark Doliner <markdoliner@pidgin.im>
parents:
4342
diff
changeset
|
2874 | dialog_msg = g_strdup_printf(_("<B>UIN:</B> %s<BR><B>Status:</B> %s<HR>%s"), who, status_msg, g_strjoinv("<BR>", splitmsg)); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2875 | else |
|
4344
01db0d9079ea
[gaim-migrate @ 4609]
Mark Doliner <markdoliner@pidgin.im>
parents:
4342
diff
changeset
|
2876 | dialog_msg = g_strdup_printf(_("<B>Status:</B> %s<HR>%s"), status_msg, g_strjoinv("<BR>", splitmsg)); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2877 | g_show_info_text(gc, who, 2, dialog_msg, NULL); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2878 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2879 | g_free(status_msg); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2880 | g_free(dialog_msg); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2881 | g_strfreev(splitmsg); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2882 | } break; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2883 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2884 | default: { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2885 | gaim_debug(GAIM_DEBUG_WARNING, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2886 | "Received an unknown client auto-response from %s. " |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2887 | "Type 0x%04hx\n", who, reason); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2888 | } break; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2889 | } /* end of switch */ |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2890 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2891 | return 0; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2892 | } |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2893 | |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2894 | 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
|
2895 | va_list ap; |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2896 | fu16_t chan, reason; |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2897 | char *who; |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2898 | |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2899 | va_start(ap, fr); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
2900 | chan = (fu16_t)va_arg(ap, unsigned int); |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2901 | who = va_arg(ap, char *); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
2902 | reason = (fu16_t)va_arg(ap, unsigned int); |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2903 | |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
2904 | if (chan == 0x0002) { /* File transfer declined */ |
| 3630 | 2905 | char *cookie = va_arg(ap, char *); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2906 | return gaim_parse_clientauto_ch2(sess, who, reason, cookie); |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
2907 | } else if (chan == 0x0004) { /* ICQ message */ |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
2908 | fu32_t state = 0; |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2909 | char *msg = NULL; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2910 | if (reason == 0x0003) { |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
2911 | state = va_arg(ap, fu32_t); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2912 | msg = va_arg(ap, char *); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2913 | } |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2914 | return gaim_parse_clientauto_ch4(sess, who, reason, state, msg); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
2915 | } |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
2916 | |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2917 | va_end(ap); |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2918 | |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2919 | return 1; |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2920 | } |
|
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
2921 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2922 | static int gaim_parse_genericerr(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 2923 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2924 | fu16_t reason; |
|
2865
fbc616afa491
[gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2864
diff
changeset
|
2925 | char *m; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2926 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2927 | va_start(ap, fr); |
| 4199 | 2928 | reason = (fu16_t) va_arg(ap, unsigned int); |
| 2086 | 2929 | va_end(ap); |
| 2930 | ||
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2931 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2932 | "snac threw error (reason 0x%04hx: %s)\n", reason, |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2933 | (reason < msgerrreasonlen) ? msgerrreason[reason] : "unknown"); |
| 2086 | 2934 | |
|
2865
fbc616afa491
[gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2864
diff
changeset
|
2935 | m = g_strdup_printf(_("SNAC threw error: %s\n"), |
|
5411
b3683d2acbb4
[gaim-migrate @ 5787]
Mark Doliner <markdoliner@pidgin.im>
parents:
5402
diff
changeset
|
2936 | reason < msgerrreasonlen ? _(msgerrreason[reason]) : _("Unknown error")); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
2937 | gaim_notify_error(sess->aux_data, NULL, m, NULL); |
|
2865
fbc616afa491
[gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2864
diff
changeset
|
2938 | g_free(m); |
|
fbc616afa491
[gaim-migrate @ 2878]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2864
diff
changeset
|
2939 | |
| 2086 | 2940 | return 1; |
| 2941 | } | |
| 2942 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2943 | static int gaim_parse_msgerr(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2944 | #if 0 |
| 5575 | 2945 | GaimConnection *gc = sess->aux_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2946 | struct oscar_data *od = gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2947 | struct gaim_xfer *xfer; |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
2948 | #endif |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2949 | va_list ap; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2950 | fu16_t reason; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2951 | char *data, *buf; |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
2952 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
2953 | va_start(ap, fr); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2954 | reason = (fu16_t)va_arg(ap, unsigned int); |
| 3752 | 2955 | data = va_arg(ap, char *); |
| 2086 | 2956 | va_end(ap); |
| 2957 | ||
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2958 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
2959 | "Message error with data %s and reason %hu\n", data, reason); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2960 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2961 | /* BBB */ |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
2962 | #if 0 |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2963 | /* If this was a file transfer request, data is a cookie */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2964 | 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
|
2965 | gaim_xfer_cancel_remote(xfer); |
| 3630 | 2966 | return 1; |
| 2967 | } | |
|
4508
3b98688619fc
[gaim-migrate @ 4784]
Christian Hammond <chipx86@chipx86.com>
parents:
4491
diff
changeset
|
2968 | #endif |
| 3630 | 2969 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2970 | /* Data is assumed to be the destination sn */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2971 | buf = g_strdup_printf(_("Your message to %s did not get sent:"), data); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
2972 | gaim_notify_error(sess->aux_data, NULL, buf, |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
2973 | (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("No reason given.")); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
2974 | g_free(buf); |
| 2086 | 2975 | |
| 2976 | return 1; | |
| 2977 | } | |
| 2978 | ||
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2979 | static int gaim_parse_mtn(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 2980 | GaimConnection *gc = sess->aux_data; |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2981 | va_list ap; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2982 | fu16_t type1, type2; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2983 | char *sn; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2984 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2985 | va_start(ap, fr); |
| 4199 | 2986 | type1 = (fu16_t) va_arg(ap, unsigned int); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2987 | sn = va_arg(ap, char *); |
| 4199 | 2988 | type2 = (fu16_t) va_arg(ap, unsigned int); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2989 | va_end(ap); |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2990 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2991 | switch (type2) { |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2992 | case 0x0000: { /* Text has been cleared */ |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2993 | serv_got_typing_stopped(gc, sn); |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2994 | } break; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2995 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2996 | case 0x0001: { /* Paused typing */ |
| 3768 | 2997 | serv_got_typing(gc, sn, 0, TYPED); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2998 | } break; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
2999 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
3000 | case 0x0002: { /* Typing */ |
| 3768 | 3001 | serv_got_typing(gc, sn, 0, TYPING); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
3002 | } break; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
3003 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
3004 | default: { |
|
5435
990c340ecb6d
[gaim-migrate @ 5817]
Mark Doliner <markdoliner@pidgin.im>
parents:
5421
diff
changeset
|
3005 | gaim_debug(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
|
3006 | } break; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
3007 | } |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
3008 | |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
3009 | return 1; |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
3010 | } |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
3011 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3012 | static int gaim_parse_locerr(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3013 | char *buf; |
| 2086 | 3014 | va_list ap; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3015 | fu16_t reason; |
| 2086 | 3016 | char *destn; |
| 3017 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3018 | va_start(ap, fr); |
| 4199 | 3019 | reason = (fu16_t) va_arg(ap, unsigned int); |
| 2086 | 3020 | destn = va_arg(ap, char *); |
| 3021 | va_end(ap); | |
| 3022 | ||
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3023 | buf = g_strdup_printf(_("User information for %s unavailable:"), destn); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
3024 | gaim_notify_error(sess->aux_data, NULL, buf, |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
3025 | (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("No reason given.")); |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3026 | g_free(buf); |
| 2086 | 3027 | |
| 3028 | return 1; | |
| 3029 | } | |
| 3030 | ||
| 3031 | static char *images(int flags) { | |
| 3032 | static char buf[1024]; | |
|
3101
77ed45aa5ae2
[gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents:
3092
diff
changeset
|
3033 | g_snprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s", |
| 2679 | 3034 | (flags & AIM_FLAG_ACTIVEBUDDY) ? "<IMG SRC=\"ab_icon.gif\">" : "", |
| 2086 | 3035 | (flags & AIM_FLAG_UNCONFIRMED) ? "<IMG SRC=\"dt_icon.gif\">" : "", |
| 3036 | (flags & AIM_FLAG_AOL) ? "<IMG SRC=\"aol_icon.gif\">" : "", | |
|
3101
77ed45aa5ae2
[gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents:
3092
diff
changeset
|
3037 | (flags & AIM_FLAG_ICQ) ? "<IMG SRC=\"icq_icon.gif\">" : "", |
| 2086 | 3038 | (flags & AIM_FLAG_ADMINISTRATOR) ? "<IMG SRC=\"admin_icon.gif\">" : "", |
|
3079
e55c9a9cc4fc
[gaim-migrate @ 3093]
Mark Doliner <markdoliner@pidgin.im>
parents:
3074
diff
changeset
|
3039 | (flags & AIM_FLAG_FREE) ? "<IMG SRC=\"free_icon.gif\">" : "", |
|
e55c9a9cc4fc
[gaim-migrate @ 3093]
Mark Doliner <markdoliner@pidgin.im>
parents:
3074
diff
changeset
|
3040 | (flags & AIM_FLAG_WIRELESS) ? "<IMG SRC=\"wireless_icon.gif\">" : ""); |
| 2086 | 3041 | return buf; |
| 3042 | } | |
| 3043 | ||
|
3101
77ed45aa5ae2
[gaim-migrate @ 3115]
Mark Doliner <markdoliner@pidgin.im>
parents:
3092
diff
changeset
|
3044 | |
| 2920 | 3045 | static char *caps_string(guint caps) |
| 3046 | { | |
| 3047 | static char buf[512], *tmp; | |
| 3048 | int count = 0, i = 0; | |
| 3049 | guint bit = 1; | |
|
4742
dc3735abd7d3
[gaim-migrate @ 5057]
Mark Doliner <markdoliner@pidgin.im>
parents:
4741
diff
changeset
|
3050 | |
|
dc3735abd7d3
[gaim-migrate @ 5057]
Mark Doliner <markdoliner@pidgin.im>
parents:
4741
diff
changeset
|
3051 | if (!caps) { |
| 4744 | 3052 | return NULL; |
|
4743
21bf5b69519d
[gaim-migrate @ 5058]
Mark Doliner <markdoliner@pidgin.im>
parents:
4742
diff
changeset
|
3053 | } else while (bit <= 0x20000) { |
| 2920 | 3054 | if (bit & caps) { |
| 3055 | switch (bit) { | |
| 3056 | case 0x1: | |
| 3057 | tmp = _("Buddy Icon"); | |
| 3058 | break; | |
| 3059 | case 0x2: | |
| 3060 | tmp = _("Voice"); | |
| 3061 | break; | |
| 3062 | case 0x4: | |
|
4898
285e9ff6eeb8
[gaim-migrate @ 5230]
Mark Doliner <markdoliner@pidgin.im>
parents:
4889
diff
changeset
|
3063 | tmp = _("Direct IM"); |
| 2920 | 3064 | break; |
| 3065 | case 0x8: | |
| 3066 | tmp = _("Chat"); | |
| 3067 | break; | |
| 3068 | case 0x10: | |
| 3069 | tmp = _("Get File"); | |
| 3070 | break; | |
| 3071 | case 0x20: | |
| 3072 | tmp = _("Send File"); | |
| 3073 | break; | |
| 3074 | case 0x40: | |
| 3075 | case 0x200: | |
| 3076 | tmp = _("Games"); | |
| 3077 | break; | |
| 3078 | case 0x80: | |
|
4898
285e9ff6eeb8
[gaim-migrate @ 5230]
Mark Doliner <markdoliner@pidgin.im>
parents:
4889
diff
changeset
|
3079 | tmp = _("Add-Ins"); |
| 2920 | 3080 | break; |
| 3081 | case 0x100: | |
| 3082 | tmp = _("Send Buddy List"); | |
| 3083 | break; | |
| 3084 | case 0x400: | |
| 3085 | tmp = _("EveryBuddy Bug"); | |
| 3086 | break; | |
| 3087 | case 0x800: | |
| 3088 | tmp = _("AP User"); | |
| 3089 | break; | |
| 3090 | case 0x1000: | |
| 3091 | tmp = _("ICQ RTF"); | |
| 3092 | break; | |
| 3093 | case 0x2000: | |
| 3094 | tmp = _("Nihilist"); | |
| 3095 | break; | |
| 3096 | case 0x4000: | |
| 3097 | tmp = _("ICQ Server Relay"); | |
| 3098 | break; | |
| 3099 | case 0x8000: | |
| 3100 | tmp = _("ICQ Unknown"); | |
| 3101 | break; | |
| 3102 | case 0x10000: | |
| 3103 | tmp = _("Trillian Encryption"); | |
| 3104 | break; | |
|
4742
dc3735abd7d3
[gaim-migrate @ 5057]
Mark Doliner <markdoliner@pidgin.im>
parents:
4741
diff
changeset
|
3105 | case 0x20000: |
|
dc3735abd7d3
[gaim-migrate @ 5057]
Mark Doliner <markdoliner@pidgin.im>
parents:
4741
diff
changeset
|
3106 | tmp = _("ICQ UTF8"); |
|
dc3735abd7d3
[gaim-migrate @ 5057]
Mark Doliner <markdoliner@pidgin.im>
parents:
4741
diff
changeset
|
3107 | break; |
| 2920 | 3108 | default: |
| 3109 | tmp = NULL; | |
| 3110 | break; | |
| 3111 | } | |
| 3112 | if (tmp) | |
| 3113 | i += g_snprintf(buf + i, sizeof(buf) - i, "%s%s", (count ? ", " : ""), | |
| 3114 | tmp); | |
| 3115 | count++; | |
| 3116 | } | |
| 3117 | bit <<= 1; | |
| 3118 | } | |
| 4744 | 3119 | return buf; |
| 2920 | 3120 | } |
| 3121 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3122 | static int gaim_parse_user_info(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 3123 | GaimConnection *gc = sess->aux_data; |
|
4791
b35003e42654
[gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents:
4790
diff
changeset
|
3124 | struct oscar_data *od = gc->proto_data; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3125 | gchar *header; |
|
4791
b35003e42654
[gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents:
4790
diff
changeset
|
3126 | GSList *l = od->evilhack; |
|
b35003e42654
[gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents:
4790
diff
changeset
|
3127 | gboolean evilhack = FALSE; |
|
b35003e42654
[gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents:
4790
diff
changeset
|
3128 | gchar *membersince = NULL, *onlinesince = NULL, *idle = NULL; |
|
b35003e42654
[gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents:
4790
diff
changeset
|
3129 | va_list ap; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3130 | aim_userinfo_t *info; |
|
4791
b35003e42654
[gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents:
4790
diff
changeset
|
3131 | fu16_t infotype; |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3132 | char *text_enc = NULL, *text = NULL, *utf8 = NULL; |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3133 | int text_len; |
| 5575 | 3134 | const char *username = gaim_account_get_username(gaim_connection_get_account(gc)); |
| 2086 | 3135 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3136 | va_start(ap, fr); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3137 | info = va_arg(ap, aim_userinfo_t *); |
| 4199 | 3138 | infotype = (fu16_t) va_arg(ap, unsigned int); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3139 | text_enc = va_arg(ap, char *); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3140 | text = va_arg(ap, char *); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3141 | text_len = va_arg(ap, int); |
| 2086 | 3142 | va_end(ap); |
| 3143 | ||
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3144 | if (text_len > 0) { |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
3145 | if (!(utf8 = oscar_encoding_to_utf8(text_enc, text, text_len))) { |
|
4791
b35003e42654
[gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents:
4790
diff
changeset
|
3146 | utf8 = g_strdup(_("<i>Unable to display information because it was sent in an unknown encoding.</i>")); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3147 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3148 | "Encountered an unknown encoding while parsing userinfo\n"); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3149 | } |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3150 | } |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3151 | |
| 2993 | 3152 | if (info->present & AIM_USERINFO_PRESENT_ONLINESINCE) { |
| 4834 | 3153 | onlinesince = g_strdup_printf(_("Online Since : <b>%s</b><br>\n"), |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
3154 | asctime(localtime((time_t *)&info->onlinesince))); |
| 2993 | 3155 | } |
| 3156 | ||
| 3157 | if (info->present & AIM_USERINFO_PRESENT_MEMBERSINCE) { | |
| 4834 | 3158 | membersince = g_strdup_printf(_("Member Since : <b>%s</b><br>\n"), |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
3159 | asctime(localtime((time_t *)&info->membersince))); |
| 2993 | 3160 | } |
| 3161 | ||
| 3162 | if (info->present & AIM_USERINFO_PRESENT_IDLE) { | |
|
4426
27e671cf2854
[gaim-migrate @ 4701]
Mark Doliner <markdoliner@pidgin.im>
parents:
4423
diff
changeset
|
3163 | gchar *itime = sec_to_text(info->idletime*60); |
| 4834 | 3164 | idle = g_strdup_printf(_("Idle : <b>%s</b>"), itime); |
|
4426
27e671cf2854
[gaim-migrate @ 4701]
Mark Doliner <markdoliner@pidgin.im>
parents:
4423
diff
changeset
|
3165 | g_free(itime); |
| 2993 | 3166 | } else |
| 4834 | 3167 | idle = g_strdup(_("Idle: <b>Active</b>")); |
| 2993 | 3168 | |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3169 | header = g_strdup_printf(_("Username : <b>%s</b> %s <br>\n" |
|
4791
b35003e42654
[gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents:
4790
diff
changeset
|
3170 | "Warning Level : <b>%d %%</b><br>\n" |
| 2086 | 3171 | "%s" |
| 2993 | 3172 | "%s" |
|
4344
01db0d9079ea
[gaim-migrate @ 4609]
Mark Doliner <markdoliner@pidgin.im>
parents:
4342
diff
changeset
|
3173 | "%s\n" |
|
4791
b35003e42654
[gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents:
4790
diff
changeset
|
3174 | "<hr>\n"), |
| 2086 | 3175 | info->sn, images(info->flags), |
|
5630
a05d97d87690
[gaim-migrate @ 6037]
Mark Doliner <markdoliner@pidgin.im>
parents:
5628
diff
changeset
|
3176 | (int)((info->warnlevel/10.0) + 0.5), |
| 2993 | 3177 | onlinesince ? onlinesince : "", |
| 3178 | membersince ? membersince : "", | |
| 3179 | idle ? idle : ""); | |
| 3180 | ||
| 3181 | g_free(onlinesince); | |
| 3182 | g_free(membersince); | |
| 3183 | g_free(idle); | |
|
2773
3f711c709792
[gaim-migrate @ 2786]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2768
diff
changeset
|
3184 | |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3185 | while (l) { |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3186 | char *x = l->data; |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3187 | if (!strcmp(x, normalize(info->sn))) { |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3188 | evilhack = TRUE; |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3189 | g_free(x); |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3190 | od->evilhack = g_slist_remove(od->evilhack, x); |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3191 | break; |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3192 | } |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3193 | l = l->next; |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3194 | } |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3195 | |
| 2920 | 3196 | if (infotype == AIM_GETINFO_AWAYMESSAGE) { |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3197 | if (evilhack) { |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3198 | g_show_info_text(gc, info->sn, 2, |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3199 | header, |
| 5575 | 3200 | (utf8 && *utf8) ? away_subs(utf8, username) : |
| 4207 | 3201 | _("<i>User has no away message</i>"), NULL); |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3202 | } else { |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3203 | g_show_info_text(gc, info->sn, 0, |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3204 | header, |
| 5575 | 3205 | (utf8 && *utf8) ? away_subs(utf8, username) : NULL, |
|
4791
b35003e42654
[gaim-migrate @ 5111]
Mark Doliner <markdoliner@pidgin.im>
parents:
4790
diff
changeset
|
3206 | (utf8 && *utf8) ? "<hr>" : NULL, |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3207 | NULL); |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3208 | } |
| 2920 | 3209 | } else if (infotype == AIM_GETINFO_CAPABILITIES) { |
| 3210 | g_show_info_text(gc, info->sn, 2, | |
| 3211 | header, | |
| 3212 | "<i>", _("Client Capabilities: "), | |
| 3213 | caps_string(info->capabilities), | |
| 3214 | "</i>", | |
| 3215 | NULL); | |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3216 | } else { |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3217 | g_show_info_text(gc, info->sn, 1, |
| 5575 | 3218 | (utf8 && *utf8) ? away_subs(utf8, username) : _("<i>No Information Provided</i>"), |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3219 | NULL); |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
3220 | } |
| 2086 | 3221 | |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
3222 | g_free(header); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3223 | g_free(utf8); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3224 | |
| 2086 | 3225 | return 1; |
| 3226 | } | |
| 3227 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3228 | static int gaim_parse_motd(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 3229 | char *msg; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3230 | fu16_t id; |
| 2086 | 3231 | va_list ap; |
| 3232 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3233 | va_start(ap, fr); |
| 4199 | 3234 | id = (fu16_t) va_arg(ap, unsigned int); |
| 2086 | 3235 | msg = va_arg(ap, char *); |
| 3236 | va_end(ap); | |
| 3237 | ||
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3238 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3239 | "MOTD: %s (%hu)\n", msg ? msg : "Unknown", id); |
|
2092
f56061012e3c
[gaim-migrate @ 2102]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2090
diff
changeset
|
3240 | if (id < 4) |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
3241 | gaim_notify_warning(sess->aux_data, NULL, |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
3242 | _("Your AIM connection may be lost."), NULL); |
| 2086 | 3243 | |
| 3244 | return 1; | |
| 3245 | } | |
| 3246 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3247 | static int gaim_chatnav_info(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 3248 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3249 | fu16_t type; |
| 5575 | 3250 | GaimConnection *gc = sess->aux_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3251 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
| 2086 | 3252 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3253 | va_start(ap, fr); |
| 4199 | 3254 | type = (fu16_t) va_arg(ap, unsigned int); |
| 2086 | 3255 | |
| 3256 | switch(type) { | |
| 3257 | case 0x0002: { | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3258 | fu8_t maxrooms; |
| 2086 | 3259 | struct aim_chat_exchangeinfo *exchanges; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3260 | int exchangecount, i; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3261 | |
| 4199 | 3262 | maxrooms = (fu8_t) va_arg(ap, unsigned int); |
| 2086 | 3263 | exchangecount = va_arg(ap, int); |
| 3264 | exchanges = va_arg(ap, struct aim_chat_exchangeinfo *); | |
| 3265 | ||
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3266 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3267 | "chat info: Chat Rights:\n"); |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3268 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3269 | "chat info: \tMax Concurrent Rooms: %hhd\n", maxrooms); |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3270 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3271 | "chat info: \tExchange List: (%d total)\n", exchangecount); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3272 | for (i = 0; i < exchangecount; i++) |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3273 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3274 | "chat info: \t\t%hu %s\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3275 | exchanges[i].number, exchanges[i].name ? exchanges[i].name : ""); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3276 | while (od->create_rooms) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3277 | struct create_room *cr = od->create_rooms->data; |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3278 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3279 | "creating room %s\n", cr->name); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
3280 | aim_chatnav_createroom(sess, fr->conn, cr->name, cr->exchange); |
|
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
3281 | g_free(cr->name); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3282 | od->create_rooms = g_slist_remove(od->create_rooms, cr); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
3283 | g_free(cr); |
| 2086 | 3284 | } |
| 3285 | } | |
| 3286 | break; | |
| 3287 | case 0x0008: { | |
| 3288 | char *fqcn, *name, *ck; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3289 | fu16_t instance, flags, maxmsglen, maxoccupancy, unknown, exchange; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3290 | fu8_t createperms; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3291 | fu32_t createtime; |
| 2086 | 3292 | |
| 3293 | fqcn = va_arg(ap, char *); | |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3294 | instance = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3295 | exchange = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3296 | flags = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3297 | createtime = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3298 | maxmsglen = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3299 | maxoccupancy = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3300 | createperms = (fu8_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3301 | unknown = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3302 | name = va_arg(ap, char *); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3303 | ck = va_arg(ap, char *); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3304 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3305 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
3306 | "created room: %s %hu %hu %hu %u %hu %hu %hhu %hu %s %s\n", |
| 2086 | 3307 | fqcn, |
| 3308 | exchange, instance, flags, | |
| 3309 | createtime, | |
| 3310 | maxmsglen, maxoccupancy, createperms, unknown, | |
| 3311 | name, ck); | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3312 | aim_chat_join(od->sess, od->conn, exchange, ck, instance); |
| 2086 | 3313 | } |
| 3314 | break; | |
| 3315 | default: | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3316 | gaim_debug(GAIM_DEBUG_WARNING, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3317 | "chatnav info: unknown type (%04hx)\n", type); |
| 2086 | 3318 | break; |
| 3319 | } | |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3320 | |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3321 | va_end(ap); |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3322 | |
| 2086 | 3323 | return 1; |
| 3324 | } | |
| 3325 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3326 | static int gaim_chat_join(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 3327 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3328 | int count, i; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3329 | aim_userinfo_t *info; |
| 5575 | 3330 | GaimConnection *g = sess->aux_data; |
| 2086 | 3331 | |
| 3332 | struct chat_connection *c = NULL; | |
| 3333 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3334 | va_start(ap, fr); |
| 2086 | 3335 | count = va_arg(ap, int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3336 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 3337 | va_end(ap); |
| 3338 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3339 | c = find_oscar_chat_by_conn(g, fr->conn); |
| 2086 | 3340 | if (!c) |
| 3341 | return 1; | |
| 3342 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3343 | for (i = 0; i < count; i++) |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
3344 | gaim_chat_add_user(GAIM_CHAT(c->cnv), info[i].sn, NULL); |
| 2086 | 3345 | |
| 3346 | return 1; | |
| 3347 | } | |
| 3348 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3349 | static int gaim_chat_leave(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 3350 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3351 | int count, i; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3352 | aim_userinfo_t *info; |
| 5575 | 3353 | GaimConnection *g = sess->aux_data; |
| 2086 | 3354 | |
| 3355 | struct chat_connection *c = NULL; | |
| 3356 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3357 | va_start(ap, fr); |
| 2086 | 3358 | count = va_arg(ap, int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3359 | info = va_arg(ap, aim_userinfo_t *); |
| 2086 | 3360 | va_end(ap); |
| 3361 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3362 | c = find_oscar_chat_by_conn(g, fr->conn); |
| 2086 | 3363 | if (!c) |
| 3364 | return 1; | |
| 3365 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3366 | for (i = 0; i < count; i++) |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
3367 | gaim_chat_remove_user(GAIM_CHAT(c->cnv), info[i].sn, NULL); |
| 2086 | 3368 | |
| 3369 | return 1; | |
| 3370 | } | |
| 3371 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3372 | static int gaim_chat_info_update(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3373 | va_list ap; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3374 | aim_userinfo_t *userinfo; |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3375 | struct aim_chat_roominfo *roominfo; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3376 | char *roomname; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3377 | int usercount; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3378 | char *roomdesc; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3379 | fu16_t unknown_c9, unknown_d2, unknown_d5, maxmsglen, maxvisiblemsglen; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3380 | fu32_t creationtime; |
| 5575 | 3381 | GaimConnection *gc = sess->aux_data; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3382 | 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
|
3383 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3384 | va_start(ap, fr); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3385 | roominfo = va_arg(ap, struct aim_chat_roominfo *); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3386 | roomname = va_arg(ap, char *); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3387 | usercount= va_arg(ap, int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3388 | userinfo = va_arg(ap, aim_userinfo_t *); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3389 | roomdesc = va_arg(ap, char *); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3390 | unknown_c9 = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3391 | creationtime = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3392 | maxmsglen = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3393 | unknown_d2 = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3394 | unknown_d5 = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3395 | maxvisiblemsglen = (fu16_t)va_arg(ap, unsigned int); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3396 | va_end(ap); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3397 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3398 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3399 | "inside chat_info_update (maxmsglen = %hu, maxvislen = %hu)\n", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3400 | maxmsglen, maxvisiblemsglen); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3401 | |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3402 | ccon->maxlen = maxmsglen; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3403 | ccon->maxvis = maxvisiblemsglen; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3404 | |
| 2086 | 3405 | return 1; |
| 3406 | } | |
| 3407 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3408 | static int gaim_chat_incoming_msg(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 3409 | GaimConnection *gc = sess->aux_data; |
| 2086 | 3410 | va_list ap; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3411 | aim_userinfo_t *info; |
| 2086 | 3412 | char *msg; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3413 | struct chat_connection *ccon = find_oscar_chat_by_conn(gc, fr->conn); |
| 2086 | 3414 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3415 | va_start(ap, fr); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3416 | info = va_arg(ap, aim_userinfo_t *); |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3417 | msg = va_arg(ap, char *); |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3418 | va_end(ap); |
| 2086 | 3419 | |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
3420 | serv_got_chat_in(gc, ccon->id, info->sn, 0, msg, time((time_t)NULL)); |
| 2086 | 3421 | |
| 3422 | return 1; | |
| 3423 | } | |
| 3424 | ||
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3425 | 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
|
3426 | va_list ap; |
| 5575 | 3427 | GaimConnection *gc = sess->aux_data; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3428 | struct aim_emailinfo *emailinfo; |
| 3725 | 3429 | int havenewmail; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3430 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3431 | va_start(ap, fr); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3432 | emailinfo = va_arg(ap, struct aim_emailinfo *); |
| 3725 | 3433 | havenewmail = va_arg(ap, int); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3434 | va_end(ap); |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3435 | |
| 5628 | 3436 | if (emailinfo && gaim_account_get_check_mail(gc->account)) { |
| 5575 | 3437 | gchar *to = g_strdup_printf("%s@%s", gaim_account_get_username(gaim_connection_get_account(gc)), emailinfo->domain); |
|
5542
0f02c413c862
[gaim-migrate @ 5942]
Mark Doliner <markdoliner@pidgin.im>
parents:
5540
diff
changeset
|
3438 | if (emailinfo->unread && havenewmail) |
|
0f02c413c862
[gaim-migrate @ 5942]
Mark Doliner <markdoliner@pidgin.im>
parents:
5540
diff
changeset
|
3439 | 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
|
3440 | g_free(to); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3441 | } |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3442 | |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3443 | return 1; |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3444 | } |
|
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3666
diff
changeset
|
3445 | |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3446 | static int gaim_icon_error(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 3447 | GaimConnection *gc = sess->aux_data; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3448 | struct oscar_data *od = gc->proto_data; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3449 | char *sn; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3450 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3451 | sn = od->requesticon->data; |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3452 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3453 | "removing %s from hash table\n", sn); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3454 | od->requesticon = g_slist_remove(od->requesticon, sn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3455 | free(sn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3456 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3457 | if (od->icontimer) |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3458 | g_source_remove(od->icontimer); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3459 | od->icontimer = g_timeout_add(500, gaim_icon_timerfunc, gc); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3460 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3461 | return 1; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3462 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3463 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3464 | static int gaim_icon_parseicon(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 3465 | GaimConnection *gc = sess->aux_data; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3466 | struct oscar_data *od = gc->proto_data; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3467 | GSList *cur; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3468 | va_list ap; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3469 | char *sn; |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3470 | fu8_t *iconcsum, *icon; |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3471 | fu16_t iconcsumlen, iconlen; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3472 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3473 | va_start(ap, fr); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3474 | sn = va_arg(ap, char *); |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3475 | iconcsum = va_arg(ap, fu8_t *); |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3476 | iconcsumlen = va_arg(ap, int); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3477 | icon = va_arg(ap, fu8_t *); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3478 | iconlen = va_arg(ap, int); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3479 | va_end(ap); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3480 | |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3481 | if (iconlen > 0) { |
|
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3482 | char *b16; |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
3483 | struct buddy *b = gaim_find_buddy(gc->account, sn); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3484 | set_icon_data(gc, sn, icon, iconlen); |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3485 | b16 = tobase16(iconcsum, iconcsumlen); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
3486 | if (b16) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
3487 | gaim_buddy_set_setting(b, "icon_checksum", b16); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
3488 | gaim_blist_save(); |
| 5125 | 3489 | free(b16); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
3490 | } |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3491 | } |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3492 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3493 | cur = od->requesticon; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3494 | while (cur) { |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3495 | char *cursn = cur->data; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3496 | if (!aim_sncmp(cursn, sn)) { |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3497 | od->requesticon = g_slist_remove(od->requesticon, cursn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3498 | free(cursn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3499 | cur = od->requesticon; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3500 | } else |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3501 | cur = cur->next; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3502 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3503 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3504 | if (od->icontimer) |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3505 | g_source_remove(od->icontimer); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3506 | od->icontimer = g_timeout_add(250, gaim_icon_timerfunc, gc); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3507 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3508 | return 1; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3509 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3510 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3511 | static gboolean gaim_icon_timerfunc(gpointer data) { |
| 5575 | 3512 | GaimConnection *gc = data; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3513 | struct oscar_data *od = gc->proto_data; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3514 | struct buddyinfo *bi; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3515 | aim_conn_t *conn; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3516 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3517 | if (!od->requesticon) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3518 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3519 | "no more icons to request\n"); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3520 | return FALSE; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3521 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3522 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3523 | conn = aim_getconn_type(od->sess, AIM_CONN_TYPE_ICON); |
| 4823 | 3524 | if (!conn && !od->iconconnecting) { |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3525 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_ICON); |
| 4823 | 3526 | od->iconconnecting = TRUE; |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3527 | return FALSE; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3528 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3529 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3530 | bi = g_hash_table_lookup(od->buddyinfo, (char *)od->requesticon->data); |
|
4853
5b5ed316fe65
[gaim-migrate @ 5180]
Mark Doliner <markdoliner@pidgin.im>
parents:
4848
diff
changeset
|
3531 | if (bi && (bi->iconcsumlen > 0)) { |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
3532 | aim_icon_request(od->sess, od->requesticon->data, bi->iconcsum, bi->iconcsumlen); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3533 | return FALSE; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3534 | } else { |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3535 | char *sn = od->requesticon->data; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3536 | od->requesticon = g_slist_remove(od->requesticon, sn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3537 | free(sn); |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3538 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3539 | |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3540 | return TRUE; |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3541 | } |
|
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4800
diff
changeset
|
3542 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3543 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3544 | * 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
|
3545 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3546 | static int gaim_parse_msgack(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 3547 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3548 | fu16_t type; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3549 | char *sn; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3550 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3551 | va_start(ap, fr); |
| 4199 | 3552 | type = (fu16_t) va_arg(ap, unsigned int); |
| 2086 | 3553 | sn = va_arg(ap, char *); |
| 3554 | va_end(ap); | |
| 3555 | ||
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3556 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "Sent message to %s.\n", sn); |
| 2086 | 3557 | |
| 3558 | return 1; | |
| 3559 | } | |
| 3560 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3561 | 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
|
3562 | static const char *codes[5] = { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3563 | "invalid", |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3564 | "change", |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3565 | "warning", |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3566 | "limit", |
|
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3567 | "limit cleared", |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3568 | }; |
| 2086 | 3569 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3570 | fu16_t code, rateclass; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3571 | fu32_t windowsize, clear, alert, limit, disconnect, currentavg, maxavg; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3572 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3573 | va_start(ap, fr); |
|
4200
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3574 | code = (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3575 | rateclass= (fu16_t)va_arg(ap, unsigned int); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3576 | windowsize = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3577 | clear = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3578 | alert = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3579 | limit = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3580 | disconnect = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3581 | currentavg = va_arg(ap, fu32_t); |
|
8facd81a88ac
[gaim-migrate @ 4431]
Mark Doliner <markdoliner@pidgin.im>
parents:
4199
diff
changeset
|
3582 | maxavg = va_arg(ap, fu32_t); |
| 2086 | 3583 | va_end(ap); |
| 3584 | ||
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3585 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
3586 | "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
|
3587 | "clear warning at %u, limit at %u, disconnect at %u (window size = %u)\n", |
| 2086 | 3588 | (code < 5) ? codes[code] : codes[0], |
| 3589 | rateclass, | |
| 3590 | currentavg, maxavg, | |
| 3591 | alert, clear, | |
| 3592 | limit, disconnect, | |
| 3593 | windowsize); | |
| 3594 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3595 | /* XXX fix these values */ |
| 2086 | 3596 | if (code == AIM_RATE_CODE_CHANGE) { |
| 3597 | if (currentavg >= clear) | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3598 | aim_conn_setlatency(fr->conn, 0); |
| 2086 | 3599 | } else if (code == AIM_RATE_CODE_WARNING) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3600 | aim_conn_setlatency(fr->conn, windowsize/4); |
|
2909
2935ea93dfe7
[gaim-migrate @ 2922]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2906
diff
changeset
|
3601 | } else if (code == AIM_RATE_CODE_LIMIT) { |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
3602 | gaim_notify_error(sess->aux_data, NULL, _("Rate limiting error."), |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
3603 | _("The last message was not sent because you " |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
3604 | "are over the rate limit. Please wait 10 " |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
3605 | "seconds and try again.")); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3606 | aim_conn_setlatency(fr->conn, windowsize/2); |
| 2086 | 3607 | } else if (code == AIM_RATE_CODE_CLEARLIMIT) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3608 | aim_conn_setlatency(fr->conn, 0); |
| 2086 | 3609 | } |
| 3610 | ||
| 3611 | return 1; | |
| 3612 | } | |
| 3613 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3614 | static int gaim_parse_evilnotify(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 3615 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3616 | fu16_t newevil; |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3617 | aim_userinfo_t *userinfo; |
| 5575 | 3618 | GaimConnection *gc = sess->aux_data; |
| 2086 | 3619 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3620 | va_start(ap, fr); |
| 4199 | 3621 | newevil = (fu16_t) va_arg(ap, unsigned int); |
|
2421
009ae3cf0e83
[gaim-migrate @ 2434]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2411
diff
changeset
|
3622 | userinfo = va_arg(ap, aim_userinfo_t *); |
| 2086 | 3623 | va_end(ap); |
| 3624 | ||
| 5628 | 3625 | serv_got_eviled(gc, (userinfo && userinfo->sn[0]) ? userinfo->sn : NULL, (newevil/10.0) + 0.5); |
| 2086 | 3626 | |
| 3627 | return 1; | |
| 3628 | } | |
| 3629 | ||
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3630 | static int gaim_selfinfo(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3631 | va_list ap; |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3632 | aim_userinfo_t *info; |
| 5575 | 3633 | GaimConnection *gc = sess->aux_data; |
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3634 | |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3635 | va_start(ap, fr); |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3636 | info = va_arg(ap, aim_userinfo_t *); |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3637 | va_end(ap); |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3638 | |
| 5628 | 3639 | gc->evil = (info->warnlevel/10.0) + 0.5; |
|
4841
65cf779d4f49
[gaim-migrate @ 5166]
Mark Doliner <markdoliner@pidgin.im>
parents:
4838
diff
changeset
|
3640 | |
|
65cf779d4f49
[gaim-migrate @ 5166]
Mark Doliner <markdoliner@pidgin.im>
parents:
4838
diff
changeset
|
3641 | if (info->onlinesince) |
|
65cf779d4f49
[gaim-migrate @ 5166]
Mark Doliner <markdoliner@pidgin.im>
parents:
4838
diff
changeset
|
3642 | gc->login_time_official = info->onlinesince; |
|
2507
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3643 | |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3644 | return 1; |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3645 | } |
|
4f2c8913240e
[gaim-migrate @ 2520]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2501
diff
changeset
|
3646 | |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3647 | static int gaim_connerr(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 3648 | GaimConnection *gc = sess->aux_data; |
|
4666
fd74a2faaf94
[gaim-migrate @ 4977]
Mark Doliner <markdoliner@pidgin.im>
parents:
4665
diff
changeset
|
3649 | struct oscar_data *od = gc->proto_data; |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3650 | va_list ap; |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3651 | fu16_t code; |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3652 | char *msg; |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3653 | |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3654 | va_start(ap, fr); |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3655 | code = (fu16_t)va_arg(ap, int); |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3656 | msg = va_arg(ap, char *); |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3657 | va_end(ap); |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3658 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3659 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3660 | "Disconnected. Code is 0x%04x and msg is %s\n", code, msg); |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3661 | if ((fr) && (fr->conn) && (fr->conn->type == AIM_CONN_TYPE_BOS)) { |
| 4651 | 3662 | if (code == 0x0001) { |
| 5579 | 3663 | gaim_connection_error(gc, _("You have been disconnected because you have signed on with this screen name at another location.")); |
| 4651 | 3664 | } else { |
| 5579 | 3665 | gaim_connection_error(gc, _("You have been signed off for an unknown reason.")); |
| 4651 | 3666 | } |
|
4666
fd74a2faaf94
[gaim-migrate @ 4977]
Mark Doliner <markdoliner@pidgin.im>
parents:
4665
diff
changeset
|
3667 | od->killme = TRUE; |
|
4649
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3668 | } |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3669 | |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3670 | return 1; |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3671 | } |
|
ef77210d482f
[gaim-migrate @ 4960]
Mark Doliner <markdoliner@pidgin.im>
parents:
4646
diff
changeset
|
3672 | |
| 2675 | 3673 | static int conninitdone_bos(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3674 | |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
3675 | aim_reqpersonalinfo(sess, fr->conn); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3676 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3677 | #ifndef NOSSI |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3678 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "ssi: requesting ssi list\n"); |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
3679 | aim_ssi_reqrights(sess); |
|
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
3680 | aim_ssi_reqdata(sess, sess->ssi.timestamp, sess->ssi.numitems); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3681 | #endif |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3682 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3683 | aim_bos_reqlocaterights(sess, fr->conn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3684 | aim_bos_reqbuddyrights(sess, fr->conn); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3685 | aim_im_reqparams(sess); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3686 | aim_bos_reqrights(sess, fr->conn); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3687 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3688 | #ifdef NOSSI |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3689 | aim_bos_setgroupperm(sess, fr->conn, AIM_FLAG_ALLUSERS); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
3690 | 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
|
3691 | #endif |
| 2086 | 3692 | |
| 3693 | return 1; | |
| 3694 | } | |
| 3695 | ||
| 2675 | 3696 | static int conninitdone_admin(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 3697 | GaimConnection *gc = sess->aux_data; |
| 2647 | 3698 | struct oscar_data *od = gc->proto_data; |
| 3699 | ||
| 2672 | 3700 | aim_clientready(sess, fr->conn); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3701 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "connected to admin\n"); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3702 | |
| 2647 | 3703 | if (od->chpass) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3704 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "changing password\n"); |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
3705 | aim_admin_changepasswd(sess, fr->conn, od->newp, od->oldp); |
| 2647 | 3706 | g_free(od->oldp); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
3707 | od->oldp = NULL; |
| 2647 | 3708 | g_free(od->newp); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
3709 | od->newp = NULL; |
| 2647 | 3710 | od->chpass = FALSE; |
| 3711 | } | |
| 2979 | 3712 | if (od->setnick) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3713 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "formatting screenname\n"); |
| 2979 | 3714 | aim_admin_setnick(sess, fr->conn, od->newsn); |
| 3715 | g_free(od->newsn); | |
| 3716 | od->newsn = NULL; | |
| 3717 | od->setnick = FALSE; | |
| 3718 | } | |
| 2647 | 3719 | if (od->conf) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3720 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "confirming account\n"); |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
3721 | aim_admin_reqconfirm(sess, fr->conn); |
| 2647 | 3722 | od->conf = FALSE; |
| 3723 | } | |
| 3724 | if (od->reqemail) { | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3725 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "requesting email\n"); |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
3726 | aim_admin_getinfo(sess, fr->conn, 0x0011); |
| 2647 | 3727 | od->reqemail = FALSE; |
| 3728 | } | |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
3729 | if (od->setemail) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3730 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "setting email\n"); |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
3731 | aim_admin_setemail(sess, fr->conn, od->email); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
3732 | g_free(od->email); |
|
5497
da3c08f3af25
[gaim-migrate @ 5893]
Mark Doliner <markdoliner@pidgin.im>
parents:
5493
diff
changeset
|
3733 | od->email = NULL; |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
3734 | od->setemail = FALSE; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
3735 | } |
| 2647 | 3736 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3737 | return 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3738 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3739 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3740 | 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
|
3741 | struct aim_icbmparameters *params; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3742 | va_list ap; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3743 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3744 | va_start(ap, fr); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3745 | params = va_arg(ap, struct aim_icbmparameters *); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3746 | va_end(ap); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3747 | |
|
4194
dbe45b0c38fa
[gaim-migrate @ 4425]
Mark Doliner <markdoliner@pidgin.im>
parents:
4173
diff
changeset
|
3748 | /* XXX - evidently this crashes on solaris. i have no clue why |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3749 | gaim_debug(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
|
3750 | "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
|
3751 | params->maxchan, params->flags, params->maxmsglen, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3752 | ((float)params->maxsenderwarn)/10.0, ((float)params->maxrecverwarn)/10.0, |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3753 | params->minmsginterval); |
|
2427
761801814c88
[gaim-migrate @ 2440]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2421
diff
changeset
|
3754 | */ |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3755 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3756 | /* Maybe senderwarn and recverwarn should be user preferences... */ |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
3757 | params->flags = 0x0000000b; |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3758 | params->maxmsglen = 8000; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3759 | params->minmsginterval = 0; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3760 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3761 | aim_im_setparams(sess, params); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3762 | |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3763 | return 1; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3764 | } |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
3765 | |
| 2993 | 3766 | static int gaim_parse_locaterights(aim_session_t *sess, aim_frame_t *fr, ...) |
| 3767 | { | |
| 5575 | 3768 | GaimConnection *gc = sess->aux_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3769 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
5306
1707fdf8c530
[gaim-migrate @ 5678]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
3770 | va_list ap; |
|
1707fdf8c530
[gaim-migrate @ 5678]
Mark Doliner <markdoliner@pidgin.im>
parents:
5302
diff
changeset
|
3771 | fu16_t maxsiglen; |
| 2993 | 3772 | |
| 3773 | va_start(ap, fr); | |
| 4199 | 3774 | maxsiglen = (fu16_t) va_arg(ap, int); |
| 2993 | 3775 | va_end(ap); |
| 3776 | ||
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3777 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3778 | "locate rights: max sig len = %d\n", maxsiglen); |
| 2993 | 3779 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3780 | od->rights.maxsiglen = od->rights.maxawaymsglen = (guint)maxsiglen; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3781 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3782 | if (od->icq) |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3783 | aim_bos_setprofile(sess, fr->conn, NULL, NULL, 0, NULL, NULL, 0, caps_icq); |
|
5301
38f02eecad54
[gaim-migrate @ 5673]
Mark Doliner <markdoliner@pidgin.im>
parents:
5300
diff
changeset
|
3784 | else |
|
38f02eecad54
[gaim-migrate @ 5673]
Mark Doliner <markdoliner@pidgin.im>
parents:
5300
diff
changeset
|
3785 | oscar_set_info(gc, gc->account->user_info); |
| 2993 | 3786 | |
| 3787 | return 1; | |
| 3788 | } | |
| 3789 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3790 | 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
|
3791 | va_list ap; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3792 | fu16_t maxbuddies, maxwatchers; |
| 5575 | 3793 | GaimConnection *gc = sess->aux_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3794 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3795 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3796 | va_start(ap, fr); |
| 4199 | 3797 | maxbuddies = (fu16_t) va_arg(ap, unsigned int); |
| 3798 | maxwatchers = (fu16_t) va_arg(ap, unsigned int); | |
| 2086 | 3799 | va_end(ap); |
| 3800 | ||
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3801 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3802 | "buddy list rights: Max buddies = %hu / Max watchers = %hu\n", maxbuddies, maxwatchers); |
| 2086 | 3803 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3804 | od->rights.maxbuddies = (guint)maxbuddies; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3805 | od->rights.maxwatchers = (guint)maxwatchers; |
| 2993 | 3806 | |
| 2086 | 3807 | return 1; |
| 3808 | } | |
| 3809 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3810 | static int gaim_bosrights(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3811 | fu16_t maxpermits, maxdenies; |
| 2086 | 3812 | va_list ap; |
| 5575 | 3813 | GaimConnection *gc = sess->aux_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3814 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
| 2086 | 3815 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3816 | va_start(ap, fr); |
| 4199 | 3817 | maxpermits = (fu16_t) va_arg(ap, unsigned int); |
| 3818 | maxdenies = (fu16_t) va_arg(ap, unsigned int); | |
| 2086 | 3819 | va_end(ap); |
| 3820 | ||
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3821 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3822 | "BOS rights: Max permit = %hu / Max deny = %hu\n", maxpermits, maxdenies); |
| 2086 | 3823 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3824 | od->rights.maxpermits = (guint)maxpermits; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3825 | od->rights.maxdenies = (guint)maxdenies; |
| 2993 | 3826 | |
|
5576
8a3ce839ed22
[gaim-migrate @ 5980]
Christian Hammond <chipx86@chipx86.com>
parents:
5575
diff
changeset
|
3827 | gaim_connection_set_state(gc, GAIM_CONNECTED); |
| 2993 | 3828 | serv_finish_login(gc); |
| 3829 | ||
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3830 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "buddy list loaded\n"); |
| 2993 | 3831 | |
| 2672 | 3832 | aim_clientready(sess, fr->conn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
3833 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3834 | /* XXX - Should call aim_bos_setidle with 0x0000 */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
3835 | |
|
4664
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
3836 | if (od->icq) { |
|
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
3837 | aim_icq_reqofflinemsgs(sess); |
|
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
3838 | aim_icq_hideip(sess); |
|
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
3839 | } |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3840 | |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2698
diff
changeset
|
3841 | aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_CHATNAV); |
|
4102
06290da3f88d
[gaim-migrate @ 4317]
Mark Doliner <markdoliner@pidgin.im>
parents:
4076
diff
changeset
|
3842 | if (sess->authinfo->email) |
|
06290da3f88d
[gaim-migrate @ 4317]
Mark Doliner <markdoliner@pidgin.im>
parents:
4076
diff
changeset
|
3843 | aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_EMAIL); |
| 2086 | 3844 | |
| 3845 | return 1; | |
| 3846 | } | |
| 3847 | ||
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3848 | 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
|
3849 | va_list ap; |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3850 | struct aim_icq_offlinemsg *msg; |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
3851 | struct aim_incomingim_ch4_args args; |
|
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
3852 | time_t t; |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3853 | |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3854 | va_start(ap, fr); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3855 | msg = va_arg(ap, struct aim_icq_offlinemsg *); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3856 | va_end(ap); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3857 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3858 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
3859 | "Received offline message. Converting to channel 4 ICBM...\n"); |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
3860 | args.uin = msg->sender; |
|
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
3861 | args.type = msg->type; |
|
4173
e2528bd24e6f
[gaim-migrate @ 4403]
Mark Doliner <markdoliner@pidgin.im>
parents:
4166
diff
changeset
|
3862 | args.flags = msg->flags; |
|
4076
563a1af15501
[gaim-migrate @ 4291]
Mark Doliner <markdoliner@pidgin.im>
parents:
4075
diff
changeset
|
3863 | args.msglen = msg->msglen; |
|
4075
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
3864 | args.msg = msg->msg; |
|
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
3865 | t = get_time(msg->year, msg->month, msg->day, msg->hour, msg->minute, 0); |
|
1b8062090546
[gaim-migrate @ 4290]
Mark Doliner <markdoliner@pidgin.im>
parents:
4056
diff
changeset
|
3866 | incomingim_chan4(sess, fr->conn, NULL, &args, t); |
|
2706
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3867 | |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3868 | return 1; |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3869 | } |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3870 | |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3871 | 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
|
3872 | { |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3873 | aim_icq_ackofflinemsgs(sess); |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3874 | return 1; |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3875 | } |
|
ac9384d37d6c
[gaim-migrate @ 2719]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2704
diff
changeset
|
3876 | |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3877 | 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
|
3878 | { |
| 5575 | 3879 | GaimConnection *gc = sess->aux_data; |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3880 | gchar *buf, *tmp, *utf8; |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3881 | gchar who[16]; |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
3882 | va_list ap; |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3883 | struct aim_icq_info *info; |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
3884 | |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
3885 | va_start(ap, fr); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3886 | info = va_arg(ap, struct aim_icq_info *); |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
3887 | va_end(ap); |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
3888 | |
|
4664
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
3889 | if (!info->uin) |
|
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
3890 | return 0; |
|
1f5d72a07e64
[gaim-migrate @ 4975]
Mark Doliner <markdoliner@pidgin.im>
parents:
4662
diff
changeset
|
3891 | |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
3892 | g_snprintf(who, sizeof(who), "%u", info->uin); |
|
4820
1e869f00810b
[gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents:
4819
diff
changeset
|
3893 | buf = g_strdup_printf("<b>%s</b> %s", _("UIN:"), who); |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3894 | if (info->nick && info->nick[0] && (utf8 = gaim_try_conv_to_utf8(info->nick))) { |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3895 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Nick:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8); |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3896 | } |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3897 | if (info->first && info->first[0] && (utf8 = gaim_try_conv_to_utf8(info->first))) { |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3898 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("First Name:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8); |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3899 | } |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3900 | if (info->last && info->last[0] && (utf8 = gaim_try_conv_to_utf8(info->last))) { |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3901 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Last Name:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8); |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3902 | } |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3903 | if (info->email && info->email[0] && (utf8 = gaim_try_conv_to_utf8(info->email))) { |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3904 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Email Address:"), "</b> <a href=\"mailto:", utf8, "\">", utf8, "</a>", NULL); g_free(tmp); g_free(utf8); |
|
4625
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
3905 | } |
|
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
3906 | if (info->numaddresses && info->email2) { |
|
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
3907 | int i; |
|
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
3908 | for (i = 0; i < info->numaddresses; i++) { |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3909 | if (info->email2[i] && info->email2[i][0] && (utf8 = gaim_try_conv_to_utf8(info->email2[i]))) { |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3910 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Email Address:"), "</b> <a href=\"mailto:", utf8, "\">", utf8, "</a>", NULL); g_free(tmp); g_free(utf8); |
| 4643 | 3911 | } |
|
4625
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
3912 | } |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3913 | } |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3914 | if (info->mobile && info->mobile[0] && (utf8 = gaim_try_conv_to_utf8(info->mobile))) { |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3915 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Mobile Phone:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8); |
|
4625
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
3916 | } |
|
f5b87130e1c4
[gaim-migrate @ 4916]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
3917 | if (info->gender) { |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3918 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Gender:"), "</b> ", info->gender==1 ? _("Female") : _("Male"), NULL); g_free(tmp); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3919 | } |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3920 | if (info->birthyear || info->birthmonth || info->birthday) { |
|
4627
4895653771a7
[gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents:
4625
diff
changeset
|
3921 | char date[30]; |
|
4895653771a7
[gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents:
4625
diff
changeset
|
3922 | struct tm tm; |
|
4895653771a7
[gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents:
4625
diff
changeset
|
3923 | tm.tm_mday = (int)info->birthday; |
|
4895653771a7
[gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents:
4625
diff
changeset
|
3924 | tm.tm_mon = (int)info->birthmonth-1; |
|
4895653771a7
[gaim-migrate @ 4918]
Mark Doliner <markdoliner@pidgin.im>
parents:
4625
diff
changeset
|
3925 | tm.tm_year = (int)info->birthyear-1900; |
| 4628 | 3926 | strftime(date, sizeof(date), "%x", &tm); |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3927 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Birthday:"), "</b> ", date, NULL); g_free(tmp); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3928 | } |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3929 | if (info->age) { |
|
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3930 | char age[5]; |
|
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3931 | snprintf(age, sizeof(age), "%hhd", info->age); |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3932 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Age:"), "</b> ", age, NULL); g_free(tmp); |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3933 | } |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3934 | if (info->personalwebpage && info->personalwebpage[0] && (utf8 = gaim_try_conv_to_utf8(info->personalwebpage))) { |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3935 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Personal Web Page:"), "</b> <a href=\"", utf8, "\">", utf8, "</a>", NULL); g_free(tmp); g_free(utf8); |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3936 | } |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3937 | if (info->info && info->info[0] && (utf8 = gaim_try_conv_to_utf8(info->info))) { |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3938 | tmp = buf; buf = g_strconcat(tmp, "<hr><b>", _("Additional Information:"), "</b><br>", utf8, NULL); g_free(tmp); g_free(utf8); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3939 | } |
|
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3940 | tmp = buf; buf = g_strconcat(tmp, "<hr>\n", NULL); g_free(tmp); |
|
4641
bcc6f5e3018a
[gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents:
4634
diff
changeset
|
3941 | if ((info->homeaddr && (info->homeaddr[0])) || (info->homecity && info->homecity[0]) || (info->homestate && info->homestate[0]) || (info->homezip && info->homezip[0])) { |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3942 | tmp = buf; buf = g_strconcat(tmp, "<b>", _("Home Address:"), "</b>", NULL); g_free(tmp); |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3943 | if (info->homeaddr && info->homeaddr[0] && (utf8 = gaim_try_conv_to_utf8(info->homeaddr))) { |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3944 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Address:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3945 | } |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3946 | if (info->homecity && info->homecity[0] && (utf8 = gaim_try_conv_to_utf8(info->homecity))) { |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3947 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("City:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3948 | } |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3949 | if (info->homestate && info->homestate[0] && (utf8 = gaim_try_conv_to_utf8(info->homestate))) { |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3950 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("State:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3951 | } |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3952 | if (info->homezip && info->homezip[0] && (utf8 = gaim_try_conv_to_utf8(info->homezip))) { |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3953 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Zip Code:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3954 | } |
|
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3955 | tmp = buf; buf = g_strconcat(tmp, "\n<hr>\n", NULL); g_free(tmp); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3956 | } |
|
4641
bcc6f5e3018a
[gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents:
4634
diff
changeset
|
3957 | if ((info->workaddr && info->workaddr[0]) || (info->workcity && info->workcity[0]) || (info->workstate && info->workstate[0]) || (info->workzip && info->workzip[0])) { |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3958 | tmp = buf; buf = g_strconcat(tmp, "<b>", _("Work Address:"), "</b>", NULL); g_free(tmp); |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3959 | if (info->workaddr && info->workaddr[0] && (utf8 = gaim_try_conv_to_utf8(info->workaddr))) { |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3960 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Address:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3961 | } |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3962 | if (info->workcity && info->workcity[0] && (utf8 = gaim_try_conv_to_utf8(info->workcity))) { |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3963 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("City:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3964 | } |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3965 | if (info->workstate && info->workstate[0] && (utf8 = gaim_try_conv_to_utf8(info->workstate))) { |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3966 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("State:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3967 | } |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3968 | if (info->workzip && info->workzip[0] && (utf8 = gaim_try_conv_to_utf8(info->workzip))) { |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3969 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Zip Code:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3970 | } |
|
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3971 | tmp = buf; buf = g_strconcat(tmp, "\n<hr>\n", NULL); g_free(tmp); |
|
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3972 | } |
|
4641
bcc6f5e3018a
[gaim-migrate @ 4951]
Mark Doliner <markdoliner@pidgin.im>
parents:
4634
diff
changeset
|
3973 | if ((info->workcompany && info->workcompany[0]) || (info->workdivision && info->workdivision[0]) || (info->workposition && info->workposition[0]) || (info->workwebpage && info->workwebpage[0])) { |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3974 | tmp = buf; buf = g_strconcat(tmp, "<b>", _("Work Information:"), "</b>", NULL); g_free(tmp); |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3975 | if (info->workcompany && info->workcompany[0] && (utf8 = gaim_try_conv_to_utf8(info->workcompany))) { |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3976 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Company:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3977 | } |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3978 | if (info->workdivision && info->workdivision[0] && (utf8 = gaim_try_conv_to_utf8(info->workdivision))) { |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3979 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Division:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3980 | } |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3981 | if (info->workposition && info->workposition[0] && (utf8 = gaim_try_conv_to_utf8(info->workposition))) { |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3982 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Position:"), "</b> ", utf8, NULL); g_free(tmp); g_free(utf8); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3983 | } |
|
4819
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3984 | if (info->workwebpage && info->workwebpage[0] && (utf8 = gaim_try_conv_to_utf8(info->workwebpage))) { |
|
3a2d064c99d1
[gaim-migrate @ 5144]
Mark Doliner <markdoliner@pidgin.im>
parents:
4811
diff
changeset
|
3985 | tmp = buf; buf = g_strconcat(tmp, "\n<br><b>", _("Web Page:"), "</b> <a href=\"", utf8, "\">", utf8, "</a>", NULL); g_free(tmp); g_free(utf8); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3986 | } |
|
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
3987 | tmp = buf; buf = g_strconcat(tmp, "\n<hr>\n", NULL); g_free(tmp); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3988 | } |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3989 | |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3990 | g_show_info_text(gc, who, 2, buf, NULL); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3991 | g_free(buf); |
|
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
3992 | |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
3993 | return 1; |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
3994 | } |
|
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
3995 | |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
3996 | 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
|
3997 | { |
| 5575 | 3998 | GaimConnection *gc = sess->aux_data; |
|
4820
1e869f00810b
[gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents:
4819
diff
changeset
|
3999 | gchar who[16], *utf8; |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4000 | struct buddy *b; |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4001 | va_list ap; |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4002 | struct aim_icq_info *info; |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4003 | |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4004 | va_start(ap, fr); |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4005 | info = va_arg(ap, struct aim_icq_info *); |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4006 | va_end(ap); |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4007 | |
|
4822
3badfb395070
[gaim-migrate @ 5147]
Mark Doliner <markdoliner@pidgin.im>
parents:
4821
diff
changeset
|
4008 | if (info->uin && info->nick && info->nick[0] && (utf8 = gaim_try_conv_to_utf8(info->nick))) { |
|
5556
5d64702e975b
[gaim-migrate @ 5957]
Mark Doliner <markdoliner@pidgin.im>
parents:
5542
diff
changeset
|
4009 | g_snprintf(who, sizeof(who), "%u", info->uin); |
|
4820
1e869f00810b
[gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents:
4819
diff
changeset
|
4010 | serv_got_alias(gc, who, utf8); |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4011 | if ((b = gaim_find_buddy(gc->account, who))) { |
|
4820
1e869f00810b
[gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents:
4819
diff
changeset
|
4012 | gaim_buddy_set_setting(b, "servernick", utf8); |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4013 | gaim_blist_save(); |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4014 | } |
|
4820
1e869f00810b
[gaim-migrate @ 5145]
Mark Doliner <markdoliner@pidgin.im>
parents:
4819
diff
changeset
|
4015 | g_free(utf8); |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4016 | } |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4017 | |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4018 | return 1; |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4019 | } |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4020 | |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4021 | 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
|
4022 | { |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4023 | char *msg, *url; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4024 | fu16_t wid, hei, delay; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4025 | va_list ap; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4026 | |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4027 | va_start(ap, fr); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4028 | msg = va_arg(ap, char *); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4029 | url = va_arg(ap, char *); |
| 4199 | 4030 | wid = (fu16_t) va_arg(ap, int); |
| 4031 | hei = (fu16_t) va_arg(ap, int); | |
| 4032 | delay = (fu16_t) va_arg(ap, int); | |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4033 | va_end(ap); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4034 | |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4035 | serv_got_popup(msg, url, wid, hei); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4036 | |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4037 | return 1; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4038 | } |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
4039 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4040 | static int gaim_parse_searchreply(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4041 | GString *buf; |
| 2086 | 4042 | va_list ap; |
| 4043 | char *address, *SNs; | |
| 4044 | int i, num; | |
| 4045 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4046 | va_start(ap, fr); |
| 2086 | 4047 | address = va_arg(ap, char *); |
| 4048 | num = va_arg(ap, int); | |
| 4049 | SNs = va_arg(ap, char *); | |
| 4050 | va_end(ap); | |
| 4051 | ||
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4052 | buf = g_string_new(""); |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4053 | g_string_printf(buf, _("<B>%s has the following screen names:</B><BR>"), address); |
| 2086 | 4054 | for (i = 0; i < num; i++) |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4055 | g_string_append_printf(buf, "%s<br>", &SNs[i * (MAXSNLEN + 1)]); |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4056 | g_show_info_text(NULL, NULL, 2, buf->str, NULL); |
|
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4057 | g_string_free(buf, TRUE); |
| 2086 | 4058 | |
| 4059 | return 1; | |
| 4060 | } | |
| 4061 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4062 | static int gaim_parse_searcherror(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 4063 | va_list ap; |
| 4064 | char *address; | |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4065 | char *buf; |
| 2086 | 4066 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4067 | va_start(ap, fr); |
| 2086 | 4068 | address = va_arg(ap, char *); |
| 4069 | va_end(ap); | |
| 4070 | ||
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4071 | buf = g_strdup_printf(_("No results found for email address %s"), address); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4072 | gaim_notify_error(sess->aux_data, NULL, buf, NULL); |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
4073 | g_free(buf); |
| 2086 | 4074 | |
| 4075 | return 1; | |
| 4076 | } | |
| 4077 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4078 | static int gaim_account_confirm(aim_session_t *sess, aim_frame_t *fr, ...) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4079 | fu16_t status; |
| 2086 | 4080 | va_list ap; |
| 4081 | char msg[256]; | |
| 5575 | 4082 | GaimConnection *gc = sess->aux_data; |
| 2086 | 4083 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4084 | va_start(ap, fr); |
| 4199 | 4085 | status = (fu16_t) va_arg(ap, unsigned int); /* status code of confirmation request */ |
| 2086 | 4086 | va_end(ap); |
| 4087 | ||
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4088 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4089 | "account confirmation returned status 0x%04x (%s)\n", status, |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4090 | status ? "unknown" : "email sent"); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4091 | if (!status) { |
|
5302
48db3c9dc259
[gaim-migrate @ 5674]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents:
5301
diff
changeset
|
4092 | g_snprintf(msg, sizeof(msg), _("You should receive an email asking to confirm %s."), |
| 5575 | 4093 | gaim_account_get_username(gaim_connection_get_account(gc))); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4094 | gaim_notify_info(gc, NULL, _("Account Confirmation Requested"), msg); |
| 2086 | 4095 | } |
| 4096 | ||
| 4097 | return 1; | |
| 4098 | } | |
| 4099 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4100 | static int gaim_info_change(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 4101 | GaimConnection *gc = sess->aux_data; |
| 2086 | 4102 | va_list ap; |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4103 | fu16_t perms, err; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4104 | char *url, *sn, *email; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4105 | int change; |
| 2086 | 4106 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4107 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
4108 | change = va_arg(ap, int); |
| 4199 | 4109 | perms = (fu16_t) va_arg(ap, unsigned int); |
| 4110 | err = (fu16_t) va_arg(ap, unsigned int); | |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4111 | url = va_arg(ap, char *); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4112 | sn = va_arg(ap, char *); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4113 | email = va_arg(ap, char *); |
| 2086 | 4114 | va_end(ap); |
| 4115 | ||
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4116 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4117 | "account info: because of %s, perms=0x%04x, err=0x%04x, url=%s, sn=%s, email=%s\n", |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4118 | change ? "change" : "request", perms, err, url, sn, email); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4119 | |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4120 | if (err && url) { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4121 | char *dialog_msg; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4122 | char *dialog_top = g_strdup_printf(_("Error Changing Account Info")); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4123 | switch (err) { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4124 | case 0x0001: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4125 | 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
|
4126 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4127 | case 0x0006: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4128 | 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
|
4129 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4130 | case 0x000b: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4131 | 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
|
4132 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4133 | case 0x001d: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4134 | 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
|
4135 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4136 | case 0x0021: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4137 | 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
|
4138 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4139 | case 0x0023: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4140 | 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
|
4141 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4142 | default: { |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4143 | dialog_msg = g_strdup_printf(_("Error 0x%04x: Unknown error."), err); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4144 | } break; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4145 | } |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4146 | gaim_notify_error(gc, NULL, dialog_top, dialog_msg); |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4147 | g_free(dialog_top); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4148 | g_free(dialog_msg); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4149 | return 1; |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4150 | } |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4151 | |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4152 | if (sn) { |
| 4585 | 4153 | 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
|
4154 | gaim_notify_info(gc, NULL, _("Account Info"), dialog_msg); |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4155 | g_free(dialog_msg); |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4156 | } |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4157 | |
|
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4158 | if (email) { |
| 5575 | 4159 | char *dialog_msg = g_strdup_printf(_("The email address for %s is %s"), |
| 4160 | gaim_account_get_username(gaim_connection_get_account(gc)), email); | |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4161 | gaim_notify_info(gc, NULL, _("Account Info"), dialog_msg); |
|
3912
334ebe7e5f93
[gaim-migrate @ 4071]
Mark Doliner <markdoliner@pidgin.im>
parents:
3867
diff
changeset
|
4162 | g_free(dialog_msg); |
| 2086 | 4163 | } |
| 4164 | ||
| 4165 | return 1; | |
| 4166 | } | |
| 4167 | ||
| 5575 | 4168 | static void oscar_keepalive(GaimConnection *gc) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4169 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4170 | aim_flap_nop(od->sess, od->conn); |
| 2086 | 4171 | } |
| 4172 | ||
| 5575 | 4173 | static int oscar_send_typing(GaimConnection *gc, char *name, int typing) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4174 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4175 | struct direct_im *dim = find_direct_im(od, name); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4176 | if (dim) |
|
4870
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
4177 | if (typing == TYPING) |
|
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
4178 | aim_odc_send_typing(od->sess, dim->conn, 0x0002); |
|
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
4179 | else if (typing == TYPED) |
|
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
4180 | aim_odc_send_typing(od->sess, dim->conn, 0x0001); |
|
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
4181 | else |
|
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
4182 | aim_odc_send_typing(od->sess, dim->conn, 0x0000); |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4183 | else { |
|
5300
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
4184 | /* Don't send if this turkey is in our deny list */ |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
4185 | GSList *list; |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
4186 | 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
|
4187 | if (!list) { |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
4188 | struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, normalize(name)); |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
4189 | if (bi && bi->typingnot) { |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
4190 | if (typing == TYPING) |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
4191 | aim_im_sendmtn(od->sess, 0x0001, name, 0x0002); |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
4192 | else if (typing == TYPED) |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
4193 | aim_im_sendmtn(od->sess, 0x0001, name, 0x0001); |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
4194 | else |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
4195 | aim_im_sendmtn(od->sess, 0x0001, name, 0x0000); |
|
3a728d511680
[gaim-migrate @ 5672]
Mark Doliner <markdoliner@pidgin.im>
parents:
5238
diff
changeset
|
4196 | } |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4197 | } |
|
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4198 | } |
| 2993 | 4199 | return 0; |
| 4200 | } | |
| 5575 | 4201 | static void oscar_ask_direct_im(GaimConnection *gc, const char *name); |
| 4202 | ||
| 4203 | static int oscar_send_im(GaimConnection *gc, const char *name, const char *message, int len, int imflags) { | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4204 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4205 | struct direct_im *dim = find_direct_im(od, name); |
|
2303
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2297
diff
changeset
|
4206 | int ret = 0; |
|
3659
95f6d95134cb
[gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents:
3643
diff
changeset
|
4207 | GError *err = NULL; |
| 5575 | 4208 | const char *iconfile = gaim_account_get_buddy_icon(gaim_connection_get_account(gc)); |
|
3458
6140a920776b
[gaim-migrate @ 3506]
Mark Doliner <markdoliner@pidgin.im>
parents:
3456
diff
changeset
|
4209 | |
|
4838
653f06ff2acf
[gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
4210 | if (dim && dim->connected) { |
|
653f06ff2acf
[gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
4211 | /* If we're directly connected, send a direct IM */ |
|
653f06ff2acf
[gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
4212 | /* XXX - The last parameter below is the encoding. Let Paco-Paco do something with it. */ |
|
4870
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
4213 | if (imflags & IM_FLAG_AWAY) |
|
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
4214 | ret = aim_odc_send_im(od->sess, dim->conn, message, len == -1 ? strlen(message) : len, 0, 1); |
|
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
4215 | else |
|
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
4216 | ret = aim_odc_send_im(od->sess, dim->conn, message, len == -1 ? strlen(message) : len, 0, 0); |
| 3044 | 4217 | } else if (len != -1) { |
| 4218 | /* Trying to send an IM image outside of a direct connection. */ | |
| 4219 | oscar_ask_direct_im(gc, name); | |
|
4838
653f06ff2acf
[gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
4220 | ret = -ENOTCONN; |
| 2086 | 4221 | } else { |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4222 | struct buddyinfo *bi; |
| 3008 | 4223 | struct aim_sendimext_args args; |
| 4224 | struct stat st; | |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4225 | int len; |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4226 | |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4227 | bi = g_hash_table_lookup(od->buddyinfo, normalize(name)); |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4228 | if (!bi) { |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4229 | bi = g_new0(struct buddyinfo, 1); |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4230 | g_hash_table_insert(od->buddyinfo, g_strdup(normalize(name)), bi); |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4231 | } |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4232 | |
| 3008 | 4233 | args.flags = AIM_IMFLAGS_ACK | AIM_IMFLAGS_CUSTOMFEATURES; |
|
4665
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
4234 | if (od->icq) { |
|
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
4235 | args.features = features_icq; |
|
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
4236 | args.featureslen = sizeof(features_icq); |
| 3008 | 4237 | args.flags |= AIM_IMFLAGS_OFFLINE; |
|
4665
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
4238 | } else { |
|
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
4239 | args.features = features_aim; |
|
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
4240 | args.featureslen = sizeof(features_aim); |
|
4972
3dd342b21444
[gaim-migrate @ 5306]
Mark Doliner <markdoliner@pidgin.im>
parents:
4969
diff
changeset
|
4241 | |
|
3dd342b21444
[gaim-migrate @ 5306]
Mark Doliner <markdoliner@pidgin.im>
parents:
4969
diff
changeset
|
4242 | if (imflags & IM_FLAG_AWAY) |
|
3dd342b21444
[gaim-migrate @ 5306]
Mark Doliner <markdoliner@pidgin.im>
parents:
4969
diff
changeset
|
4243 | args.flags |= AIM_IMFLAGS_AWAY; |
|
4665
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
4244 | } |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4245 | |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4246 | if (bi->ico_need) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4247 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4248 | "Sending buddy icon request with message\n"); |
| 3008 | 4249 | args.flags |= AIM_IMFLAGS_BUDDYREQ; |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4250 | bi->ico_need = FALSE; |
| 3008 | 4251 | } |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4252 | |
| 5575 | 4253 | if (iconfile && !stat(iconfile, &st)) { |
| 4254 | FILE *file = fopen(iconfile, "r"); | |
| 3008 | 4255 | if (file) { |
| 4256 | char *buf = g_malloc(st.st_size); | |
| 4257 | fread(buf, 1, st.st_size, file); | |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4258 | |
| 3008 | 4259 | args.iconlen = st.st_size; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4260 | args.iconsum = aimutil_iconsum(buf, st.st_size); |
| 3008 | 4261 | args.iconstamp = st.st_mtime; |
| 4262 | ||
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4263 | if ((args.iconlen != bi->ico_me_len) || (args.iconsum != bi->ico_me_csum) || (args.iconstamp != bi->ico_me_time)) |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4264 | bi->ico_informed = FALSE; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4265 | |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4266 | if (!bi->ico_informed) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4267 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4268 | "Claiming to have a buddy icon\n"); |
|
4738
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4269 | args.flags |= AIM_IMFLAGS_HASICON; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4270 | bi->ico_me_len = args.iconlen; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4271 | bi->ico_me_csum = args.iconsum; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4272 | bi->ico_me_time = args.iconstamp; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4273 | bi->ico_informed = TRUE; |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4274 | } |
|
934125d7450e
[gaim-migrate @ 5053]
Mark Doliner <markdoliner@pidgin.im>
parents:
4734
diff
changeset
|
4275 | |
| 3008 | 4276 | fclose(file); |
| 4277 | g_free(buf); | |
| 2086 | 4278 | } |
| 4279 | } | |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4280 | |
| 3008 | 4281 | args.destsn = name; |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4282 | |
| 3642 | 4283 | len = strlen(message); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4284 | args.flags |= oscar_encoding_check(message); |
| 3642 | 4285 | if (args.flags & AIM_IMFLAGS_UNICODE) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4286 | gaim_debug(GAIM_DEBUG_INFO, "oscar", "Sending Unicode IM\n"); |
|
4662
740f32459759
[gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents:
4657
diff
changeset
|
4287 | args.charset = 0x0002; |
|
4665
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
4288 | args.charsubset = 0x0000; |
|
3659
95f6d95134cb
[gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents:
3643
diff
changeset
|
4289 | args.msg = g_convert(message, len, "UCS-2BE", "UTF-8", NULL, &len, &err); |
|
95f6d95134cb
[gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents:
3643
diff
changeset
|
4290 | if (err) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4291 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4292 | "Error converting a unicode message: %s\n", err->message); |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4293 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4294 | "This really shouldn't happen!\n"); |
|
3659
95f6d95134cb
[gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents:
3643
diff
changeset
|
4295 | /* We really shouldn't try to send the |
|
95f6d95134cb
[gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents:
3643
diff
changeset
|
4296 | * IM now, but I'm not sure what to do */ |
| 4800 | 4297 | g_error_free(err); |
|
3659
95f6d95134cb
[gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents:
3643
diff
changeset
|
4298 | } |
| 3850 | 4299 | } else if (args.flags & AIM_IMFLAGS_ISO_8859_1) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4300 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4301 | "Sending ISO-8859-1 IM\n"); |
|
4662
740f32459759
[gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents:
4657
diff
changeset
|
4302 | args.charset = 0x0003; |
|
4665
d417f1b1a61b
[gaim-migrate @ 4976]
Mark Doliner <markdoliner@pidgin.im>
parents:
4664
diff
changeset
|
4303 | args.charsubset = 0x0000; |
|
3659
95f6d95134cb
[gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents:
3643
diff
changeset
|
4304 | args.msg = g_convert(message, len, "ISO-8859-1", "UTF-8", NULL, &len, &err); |
|
95f6d95134cb
[gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents:
3643
diff
changeset
|
4305 | if (err) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4306 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4307 | "conversion error: %s\n", err->message); |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4308 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4309 | "Someone tell Ethan his 8859-1 detection is wrong\n"); |
| 3642 | 4310 | args.flags ^= AIM_IMFLAGS_ISO_8859_1 | AIM_IMFLAGS_UNICODE; |
| 4311 | len = strlen(message); | |
| 4800 | 4312 | g_error_free(err); |
|
3659
95f6d95134cb
[gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents:
3643
diff
changeset
|
4313 | args.msg = g_convert(message, len, "UCS-2BE", "UTF8", NULL, &len, &err); |
|
95f6d95134cb
[gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents:
3643
diff
changeset
|
4314 | if (err) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4315 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4316 | "Error in unicode fallback: %s\n", err->message); |
| 4800 | 4317 | g_error_free(err); |
|
3659
95f6d95134cb
[gaim-migrate @ 3788]
Alex Converse <alex.converse@gmail.com>
parents:
3643
diff
changeset
|
4318 | } |
| 3642 | 4319 | } |
| 4320 | } else { | |
|
4662
740f32459759
[gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents:
4657
diff
changeset
|
4321 | args.charset = 0x0000; |
|
740f32459759
[gaim-migrate @ 4973]
Mark Doliner <markdoliner@pidgin.im>
parents:
4657
diff
changeset
|
4322 | args.charsubset = 0x0000; |
| 3642 | 4323 | args.msg = message; |
| 4324 | } | |
| 4325 | args.msglen = len; | |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4326 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4327 | ret = aim_im_sendch1_ext(od->sess, &args); |
| 2086 | 4328 | } |
|
4838
653f06ff2acf
[gaim-migrate @ 5163]
Mark Doliner <markdoliner@pidgin.im>
parents:
4834
diff
changeset
|
4329 | |
|
2303
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2297
diff
changeset
|
4330 | if (ret >= 0) |
|
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2297
diff
changeset
|
4331 | return 1; |
|
18171aa8cd37
[gaim-migrate @ 2313]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2297
diff
changeset
|
4332 | return ret; |
| 2086 | 4333 | } |
| 4334 | ||
| 5575 | 4335 | static void oscar_get_info(GaimConnection *g, const char *name) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4336 | struct oscar_data *od = (struct oscar_data *)g->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4337 | if (od->icq) |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
4338 | aim_icq_getallinfo(od->sess, name); |
|
2742
2ffd839888a5
[gaim-migrate @ 2755]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
4339 | else |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
4340 | /* people want the away message on the top, so we get the away message |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
4341 | * first and then get the regular info, since it's too difficult to |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
4342 | * insert in the middle. i hate people. */ |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4343 | aim_getinfo(od->sess, od->conn, name, AIM_GETINFO_AWAYMESSAGE); |
|
2791
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
4344 | } |
|
26bdc3e83257
[gaim-migrate @ 2804]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2789
diff
changeset
|
4345 | |
| 5575 | 4346 | static void oscar_get_away(GaimConnection *g, const char *who) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4347 | struct oscar_data *od = (struct oscar_data *)g->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4348 | if (od->icq) { |
| 4687 | 4349 | struct buddy *budlight = gaim_find_buddy(g->account, who); |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4350 | if (budlight) |
|
3595
28da7ae040a5
[gaim-migrate @ 3697]
Mark Doliner <markdoliner@pidgin.im>
parents:
3579
diff
changeset
|
4351 | if ((budlight->uc & 0xffff0000) >> 16) |
| 4687 | 4352 | aim_im_sendch2_geticqaway(od->sess, who, (budlight->uc & 0xffff0000) >> 16); |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4353 | else |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4354 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4355 | "Error: The user %s has no status message, therefore not requesting.\n", who); |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4356 | else |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4357 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4358 | "Error: Could not find %s in local contact list, therefore unable to request status message.\n", who); |
|
3212
3c00e6f5f085
[gaim-migrate @ 3229]
Mark Doliner <markdoliner@pidgin.im>
parents:
3210
diff
changeset
|
4359 | } else |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4360 | aim_getinfo(od->sess, od->conn, who, AIM_GETINFO_GENERALINFO); |
| 2086 | 4361 | } |
| 4362 | ||
| 5575 | 4363 | static void oscar_set_dir(GaimConnection *g, const char *first, const char *middle, const char *last, |
| 3466 | 4364 | 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
|
4365 | /* XXX - some of these things are wrong, but i'm lazy */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4366 | struct oscar_data *od = (struct oscar_data *)g->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4367 | aim_setdirectoryinfo(od->sess, od->conn, first, middle, last, |
| 2086 | 4368 | maiden, NULL, NULL, city, state, NULL, 0, web); |
| 4369 | } | |
| 4370 | ||
| 5575 | 4371 | static void oscar_set_idle(GaimConnection *gc, int time) { |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4372 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4373 | aim_bos_setidle(od->sess, od->conn, time); |
| 2086 | 4374 | } |
| 4375 | ||
| 5575 | 4376 | static void oscar_set_info(GaimConnection *gc, char *text) { |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4377 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4378 | fu32_t flags = 0; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4379 | char *msg = NULL; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4380 | int msglen = 0; |
| 2993 | 4381 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4382 | if (od->rights.maxsiglen == 0) |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4383 | gaim_notify_warning(gc, NULL, _("Unable to set AIM profile."), |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4384 | _("You have probably requested to set your " |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4385 | "profile before the login procedure completed. " |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4386 | "Your profile remains unset; try setting it " |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4387 | "again when you are fully connected.")); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4388 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4389 | if (od->icq) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4390 | aim_bos_setprofile(od->sess, od->conn, NULL, NULL, 0, NULL, NULL, 0, caps_icq); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4391 | else { |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4392 | if (!text) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4393 | aim_bos_setprofile(od->sess, od->conn, NULL, NULL, 0, NULL, NULL, 0, caps_aim); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4394 | return; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4395 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4396 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4397 | flags = oscar_encoding_check(text); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4398 | if (flags & AIM_IMFLAGS_UNICODE) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4399 | msg = g_convert(text, strlen(text), "UCS-2BE", "UTF-8", NULL, &msglen, NULL); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4400 | aim_bos_setprofile(od->sess, od->conn, "unicode-2-0", msg, (msglen > od->rights.maxsiglen ? od->rights.maxsiglen : msglen), NULL, NULL, 0, caps_aim); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4401 | g_free(msg); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4402 | } else if (flags & AIM_IMFLAGS_ISO_8859_1) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4403 | msg = g_convert(text, strlen(text), "ISO-8859-1", "UTF-8", NULL, &msglen, NULL); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4404 | aim_bos_setprofile(od->sess, od->conn, "iso-8859-1", msg, (msglen > od->rights.maxsiglen ? od->rights.maxsiglen : msglen), NULL, NULL, 0, caps_aim); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4405 | g_free(msg); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4406 | } else { |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4407 | msglen = strlen(text); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4408 | aim_bos_setprofile(od->sess, od->conn, "us-ascii", text, (msglen > od->rights.maxsiglen ? od->rights.maxsiglen : msglen), NULL, NULL, 0, caps_aim); |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4409 | } |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4410 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4411 | if (msglen > od->rights.maxsiglen) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4412 | gchar *errstr; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4413 | errstr = g_strdup_printf(_("The maximum profile length of %d bytes has been exceeded. " |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4414 | "Gaim has truncated it for you."), od->rights.maxsiglen); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4415 | gaim_notify_warning(gc, NULL, _("Profile too long."), errstr); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4416 | g_free(errstr); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4417 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4418 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4419 | } |
| 2993 | 4420 | |
| 4421 | return; | |
| 2086 | 4422 | } |
| 4423 | ||
| 5575 | 4424 | static void oscar_set_away_aim(GaimConnection *gc, struct oscar_data *od, const char *text) |
| 2993 | 4425 | { |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4426 | fu32_t flags = 0; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4427 | char *msg = NULL; |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4428 | int msglen = 0; |
| 2993 | 4429 | |
| 4430 | if (od->rights.maxawaymsglen == 0) | |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4431 | gaim_notify_warning(gc, NULL, _("Unable to set AIM away message."), |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4432 | _("You have probably requested to set your " |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4433 | "away message before the login procedure " |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4434 | "completed. You remain in a \"present\" " |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4435 | "state; try setting it again when you are " |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4436 | "fully connected.")); |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4437 | |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4102
diff
changeset
|
4438 | if (gc->away) { |
| 2993 | 4439 | g_free(gc->away); |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4102
diff
changeset
|
4440 | gc->away = NULL; |
|
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4102
diff
changeset
|
4441 | } |
| 2993 | 4442 | |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4443 | if (!text) { |
|
4151
29004a3d21a0
[gaim-migrate @ 4377]
Mark Doliner <markdoliner@pidgin.im>
parents:
4121
diff
changeset
|
4444 | aim_bos_setprofile(od->sess, od->conn, NULL, NULL, 0, NULL, "", 0, caps_aim); |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
4445 | return; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
4446 | } |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
4447 | |
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4448 | flags = oscar_encoding_check(text); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4449 | if (flags & AIM_IMFLAGS_UNICODE) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4450 | msg = g_convert(text, strlen(text), "UCS-2BE", "UTF-8", NULL, &msglen, NULL); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4451 | aim_bos_setprofile(od->sess, od->conn, NULL, NULL, 0, "unicode-2-0", msg, |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4452 | (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen), caps_aim); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4453 | g_free(msg); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4454 | gc->away = g_strndup(text, od->rights.maxawaymsglen/2); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4455 | } else if (flags & AIM_IMFLAGS_ISO_8859_1) { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4456 | msg = g_convert(text, strlen(text), "ISO-8859-1", "UTF-8", NULL, &msglen, NULL); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4457 | aim_bos_setprofile(od->sess, od->conn, NULL, NULL, 0, "iso-8859-1", msg, |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4458 | (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen), caps_aim); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4459 | g_free(msg); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4460 | gc->away = g_strndup(text, od->rights.maxawaymsglen); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4461 | } else { |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4462 | msglen = strlen(text); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4463 | aim_bos_setprofile(od->sess, od->conn, NULL, NULL, 0, "us-ascii", text, |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4464 | (msglen > od->rights.maxawaymsglen ? od->rights.maxawaymsglen : msglen), caps_aim); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4465 | gc->away = g_strndup(text, od->rights.maxawaymsglen); |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4466 | } |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4467 | |
|
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4468 | if (msglen > od->rights.maxawaymsglen) { |
| 2993 | 4469 | gchar *errstr; |
| 4470 | ||
|
5129
c1cfbdfcd381
[gaim-migrate @ 5492]
Mark Doliner <markdoliner@pidgin.im>
parents:
5125
diff
changeset
|
4471 | errstr = g_strdup_printf(_("The maximum away message length of %d bytes has been exceeded. " |
| 3427 | 4472 | "Gaim has truncated it and set you away."), od->rights.maxawaymsglen); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4473 | gaim_notify_warning(gc, NULL, _("Away message too long."), errstr); |
| 2993 | 4474 | g_free(errstr); |
| 4475 | } | |
| 4476 | ||
| 4477 | return; | |
| 4478 | } | |
| 4479 | ||
| 5575 | 4480 | static void oscar_set_away_icq(GaimConnection *gc, struct oscar_data *od, const char *state, const char *message) |
| 2993 | 4481 | { |
| 5575 | 4482 | GaimAccount *account = gaim_connection_get_account(gc); |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4102
diff
changeset
|
4483 | if (gc->away) { |
|
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4102
diff
changeset
|
4484 | g_free(gc->away); |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
4485 | gc->away = NULL; |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4102
diff
changeset
|
4486 | } |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
4487 | |
| 4342 | 4488 | if (strcmp(state, _("Invisible"))) { |
| 5575 | 4489 | if ((od->sess->ssi.received_data) && (aim_ssi_getpermdeny(od->sess->ssi.local) != account->perm_deny)) |
| 4490 | aim_ssi_setpermdeny(od->sess, account->perm_deny, 0xffffffff); | |
| 4491 | account->perm_deny = 4; | |
| 4342 | 4492 | } else { |
|
5542
0f02c413c862
[gaim-migrate @ 5942]
Mark Doliner <markdoliner@pidgin.im>
parents:
5540
diff
changeset
|
4493 | if ((od->sess->ssi.received_data) && (aim_ssi_getpermdeny(od->sess->ssi.local) != 0x03)) |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
4494 | aim_ssi_setpermdeny(od->sess, 0x03, 0xffffffff); |
| 5575 | 4495 | account->perm_deny = 3; |
| 4342 | 4496 | } |
| 4497 | ||
| 4498 | if (!strcmp(state, _("Online"))) | |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
4499 | aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL); |
| 4342 | 4500 | else if (!strcmp(state, _("Away"))) { |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
4501 | aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY); |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4102
diff
changeset
|
4502 | gc->away = g_strdup(""); |
| 4342 | 4503 | } else if (!strcmp(state, _("Do Not Disturb"))) { |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
4504 | aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_DND | AIM_ICQ_STATE_BUSY); |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4102
diff
changeset
|
4505 | gc->away = g_strdup(""); |
| 4342 | 4506 | } else if (!strcmp(state, _("Not Available"))) { |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
4507 | aim_setextstatus(od->sess, AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY); |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4102
diff
changeset
|
4508 | gc->away = g_strdup(""); |
| 4342 | 4509 | } else if (!strcmp(state, _("Occupied"))) { |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
4510 | aim_setextstatus(od->sess, AIM_ICQ_STATE_AWAY | AIM_ICQ_STATE_BUSY); |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4102
diff
changeset
|
4511 | gc->away = g_strdup(""); |
| 4342 | 4512 | } else if (!strcmp(state, _("Free For Chat"))) { |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
4513 | aim_setextstatus(od->sess, AIM_ICQ_STATE_CHAT); |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4102
diff
changeset
|
4514 | gc->away = g_strdup(""); |
| 4342 | 4515 | } else if (!strcmp(state, _("Invisible"))) { |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
4516 | aim_setextstatus(od->sess, AIM_ICQ_STATE_INVISIBLE); |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4102
diff
changeset
|
4517 | gc->away = g_strdup(""); |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
4518 | } else if (!strcmp(state, GAIM_AWAY_CUSTOM)) { |
| 2998 | 4519 | if (message) { |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
4520 | aim_setextstatus(od->sess, AIM_ICQ_STATE_OUT | AIM_ICQ_STATE_AWAY); |
|
4111
93b27900416e
[gaim-migrate @ 4326]
Robert McQueen <robot101@debian.org>
parents:
4102
diff
changeset
|
4521 | gc->away = g_strdup(""); |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
4522 | } else { |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
4523 | aim_setextstatus(od->sess, AIM_ICQ_STATE_NORMAL); |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
4524 | } |
| 2086 | 4525 | } |
| 2993 | 4526 | |
| 4527 | return; | |
| 4528 | } | |
| 4529 | ||
| 5575 | 4530 | static void oscar_set_away(GaimConnection *gc, char *state, char *message) |
| 2993 | 4531 | { |
| 4532 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; | |
| 4533 | ||
| 4534 | if (od->icq) | |
| 4535 | oscar_set_away_icq(gc, od, state, message); | |
| 4536 | else | |
| 4537 | oscar_set_away_aim(gc, od, message); | |
| 4538 | ||
| 4539 | return; | |
| 2086 | 4540 | } |
| 4541 | ||
| 5575 | 4542 | static void oscar_warn(GaimConnection *gc, char *name, int anon) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4543 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4544 | aim_im_warn(od->sess, od->conn, name, anon ? AIM_WARN_ANON : 0); |
| 2086 | 4545 | } |
| 4546 | ||
| 5575 | 4547 | static void oscar_dir_search(GaimConnection *gc, const char *first, const char *middle, const char *last, |
| 3466 | 4548 | const char *maiden, const char *city, const char *state, const char *country, const char *email) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4549 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
| 2086 | 4550 | if (strlen(email)) |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4551 | aim_usersearch_address(od->sess, od->conn, email); |
| 2086 | 4552 | } |
| 4553 | ||
| 5575 | 4554 | static void oscar_add_buddy(GaimConnection *gc, const char *name) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4555 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4556 | #ifdef NOSSI |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4557 | aim_add_buddy(od->sess, od->conn, name); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4558 | #else |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4559 | if ((od->sess->ssi.received_data) && !(aim_ssi_itemlist_exists(od->sess->ssi.local, name))) { |
| 4687 | 4560 | struct buddy *buddy = gaim_find_buddy(gc->account, name); |
| 4561 | struct group *group = gaim_find_buddys_group(buddy); | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4562 | if (buddy && group) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4563 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4564 | "ssi: adding buddy %s to group %s\n", name, group->name); |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
4565 | aim_ssi_addbuddy(od->sess, buddy->name, group->name, gaim_get_buddy_alias_only(buddy), NULL, NULL, 0); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4566 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4567 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4568 | #endif |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4569 | if (od->icq) |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4570 | aim_icq_getalias(od->sess, name); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4571 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4572 | |
| 5575 | 4573 | static void oscar_add_buddies(GaimConnection *gc, GList *buddies) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4574 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4575 | #ifdef NOSSI |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4576 | char buf[MSG_LEN]; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4577 | int n=0; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4578 | while (buddies) { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4579 | if (n > MSG_LEN - 18) { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4580 | aim_bos_setbuddylist(od->sess, od->conn, buf); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4581 | n = 0; |
| 3092 | 4582 | } |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4583 | n += g_snprintf(buf + n, sizeof(buf) - n, "%s&", (char *)buddies->data); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4584 | buddies = buddies->next; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4585 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4586 | aim_bos_setbuddylist(od->sess, od->conn, buf); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4587 | #else |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4588 | if (od->sess->ssi.received_data) { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4589 | while (buddies) { |
| 4687 | 4590 | struct buddy *buddy = gaim_find_buddy(gc->account, (const char *)buddies->data); |
| 4591 | struct group *group = gaim_find_buddys_group(buddy); | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4592 | if (buddy && group) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4593 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4594 | "ssi: adding buddy %s to group %s\n", (const char *)buddies->data, group->name); |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
4595 | aim_ssi_addbuddy(od->sess, buddy->name, group->name, gaim_get_buddy_alias_only(buddy), NULL, NULL, 0); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4596 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4597 | buddies = buddies->next; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4598 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4599 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4600 | #endif |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4601 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4602 | |
| 5575 | 4603 | static void oscar_remove_buddy(GaimConnection *gc, char *name, char *group) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4604 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4605 | #ifdef NOSSI |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4606 | aim_remove_buddy(od->sess, od->conn, name); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4607 | #else |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4608 | if (od->sess->ssi.received_data) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4609 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4610 | "ssi: deleting buddy %s from group %s\n", name, group); |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
4611 | aim_ssi_delbuddy(od->sess, name, group); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4612 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4613 | #endif |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4614 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4615 | |
| 5575 | 4616 | static void oscar_remove_buddies(GaimConnection *gc, GList *buddies, const char *group) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4617 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4618 | #ifdef NOSSI |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4619 | GList *cur; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4620 | for (cur=buddies; cur; cur=cur->next) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4621 | aim_remove_buddy(od->sess, od->conn, cur->data); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4622 | #else |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4623 | if (od->sess->ssi.received_data) { |
| 3092 | 4624 | while (buddies) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4625 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4626 | "ssi: deleting buddy %s from group %s\n", (char *)buddies->data, group); |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
4627 | aim_ssi_delbuddy(od->sess, buddies->data, group); |
| 3092 | 4628 | buddies = buddies->next; |
| 4629 | } | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4630 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4631 | #endif |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4632 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4633 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4634 | #ifndef NOSSI |
| 5575 | 4635 | static void oscar_move_buddy(GaimConnection *gc, const char *name, const char *old_group, const char *new_group) { |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4636 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
4303
121490448a58
[gaim-migrate @ 4557]
Mark Doliner <markdoliner@pidgin.im>
parents:
4299
diff
changeset
|
4637 | if (od->sess->ssi.received_data && strcmp(old_group, new_group)) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4638 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4639 | "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
|
4640 | aim_ssi_movebuddy(od->sess, old_group, new_group, name); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4641 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4642 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4643 | |
| 5575 | 4644 | static void oscar_alias_buddy(GaimConnection *gc, const char *name, const char *alias) { |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4645 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4646 | if (od->sess->ssi.received_data) { |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4647 | char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, name); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4648 | if (gname) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4649 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4650 | "ssi: changing the alias for buddy %s to %s\n", name, alias); |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
4651 | aim_ssi_aliasbuddy(od->sess, gname, name, alias); |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4652 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4653 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4654 | } |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4655 | |
| 5575 | 4656 | static void oscar_rename_group(GaimConnection *g, const char *old_group, const char *new_group, GList *members) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4657 | struct oscar_data *od = (struct oscar_data *)g->proto_data; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4658 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4659 | if (od->sess->ssi.received_data) { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4660 | if (aim_ssi_itemlist_finditem(od->sess->ssi.local, new_group, NULL, AIM_SSI_TYPE_GROUP)) { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4661 | oscar_remove_buddies(g, members, old_group); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4662 | oscar_add_buddies(g, members); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4663 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4664 | "ssi: moved all buddies from group %s to %s\n", old_group, new_group); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4665 | } else { |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
4666 | aim_ssi_rename_group(od->sess, old_group, new_group); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4667 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4668 | "ssi: renamed group %s to %s\n", old_group, new_group); |
|
2995
33231d4b2cd3
[gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents:
2994
diff
changeset
|
4669 | } |
|
33231d4b2cd3
[gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents:
2994
diff
changeset
|
4670 | } |
|
33231d4b2cd3
[gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents:
2994
diff
changeset
|
4671 | } |
|
33231d4b2cd3
[gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents:
2994
diff
changeset
|
4672 | |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4673 | static int gaim_ssi_parseerr(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 4674 | GaimConnection *gc = sess->aux_data; |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4675 | struct oscar_data *od = gc->proto_data; |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4676 | va_list ap; |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4677 | fu16_t reason; |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4678 | |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4679 | va_start(ap, fr); |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4680 | reason = (fu16_t)va_arg(ap, unsigned int); |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4681 | va_end(ap); |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4682 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4683 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", "ssi: SNAC error %hu\n", reason); |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4684 | |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4685 | if (reason == 0x0005) { |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4686 | gaim_notify_error(gc, NULL, _("Unable To Retrive Buddy List"), |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4687 | _("Gaim was temporarily unable to retrive your buddy list from the AIM servers. Your buddy list is not lost, and will probably become available in a few hours.")); |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4688 | } |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4689 | |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4690 | /* Activate SSI */ |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4691 | /* 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
|
4692 | /* Make sure your privacy setting/invisibility is set how you want it before this! */ |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4693 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4694 | "ssi: activating server-stored buddy list\n"); |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4695 | aim_ssi_enable(od->sess); |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4696 | |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4697 | return 1; |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4698 | } |
|
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4699 | |
| 2991 | 4700 | static int gaim_ssi_parserights(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 4701 | GaimConnection *gc = sess->aux_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4702 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4703 | int numtypes, i; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4704 | fu16_t *maxitems; |
| 2991 | 4705 | va_list ap; |
| 4706 | ||
| 4707 | va_start(ap, fr); | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4708 | numtypes = va_arg(ap, int); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4709 | maxitems = va_arg(ap, fu16_t *); |
| 2991 | 4710 | va_end(ap); |
| 4711 | ||
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4712 | gaim_debug(GAIM_DEBUG_MISC, "oscar", "ssi rights:"); |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5208
diff
changeset
|
4713 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4714 | for (i=0; i<numtypes; i++) |
|
5211
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5208
diff
changeset
|
4715 | gaim_debug(GAIM_DEBUG_MISC, NULL, " max type 0x%04x=%hd,", |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5208
diff
changeset
|
4716 | i, maxitems[i]); |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5208
diff
changeset
|
4717 | |
|
94d9756c381f
[gaim-migrate @ 5581]
Christian Hammond <chipx86@chipx86.com>
parents:
5208
diff
changeset
|
4718 | gaim_debug(GAIM_DEBUG_MISC, NULL, "\n"); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4719 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4720 | if (numtypes >= 0) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4721 | od->rights.maxbuddies = maxitems[0]; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4722 | if (numtypes >= 1) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4723 | od->rights.maxgroups = maxitems[1]; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4724 | if (numtypes >= 2) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4725 | od->rights.maxpermits = maxitems[2]; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4726 | if (numtypes >= 3) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4727 | od->rights.maxdenies = maxitems[3]; |
| 2991 | 4728 | |
| 4729 | return 1; | |
| 4730 | } | |
| 4731 | ||
| 4732 | static int gaim_ssi_parselist(aim_session_t *sess, aim_frame_t *fr, ...) { | |
| 5575 | 4733 | GaimConnection *gc = sess->aux_data; |
| 4734 | GaimAccount *account = gaim_connection_get_account(gc); | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4735 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
2995
33231d4b2cd3
[gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents:
2994
diff
changeset
|
4736 | struct aim_ssi_item *curitem; |
| 2991 | 4737 | int tmp; |
|
4778
9023518bb545
[gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents:
4776
diff
changeset
|
4738 | gboolean export = FALSE; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
4739 | /* XXX - use these? |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4740 | va_list ap; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4741 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4742 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4743 | fmtver = (fu16_t)va_arg(ap, int); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4744 | numitems = (fu16_t)va_arg(ap, int); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4745 | items = va_arg(ap, struct aim_ssi_item); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4746 | timestamp = va_arg(ap, fu32_t); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4747 | va_end(ap); */ |
| 2991 | 4748 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4749 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4750 | "ssi: syncing local list and server list\n"); |
| 2991 | 4751 | |
| 4752 | /* Clean the buddy list */ | |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
4753 | aim_ssi_cleanlist(sess); |
| 2991 | 4754 | |
| 4755 | /* Add from server list to local list */ | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4756 | for (curitem=sess->ssi.local; curitem; curitem=curitem->next) { |
| 2991 | 4757 | switch (curitem->type) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4758 | case 0x0000: { /* Buddy */ |
|
4251
7d62db57d86a
[gaim-migrate @ 4501]
Mark Doliner <markdoliner@pidgin.im>
parents:
4249
diff
changeset
|
4759 | if (curitem->name) { |
|
4292
249d89e1b14c
[gaim-migrate @ 4545]
Mark Doliner <markdoliner@pidgin.im>
parents:
4282
diff
changeset
|
4760 | char *gname = aim_ssi_itemlist_findparentname(sess->ssi.local, curitem->name); |
| 4458 | 4761 | char *gname_utf8 = gaim_try_conv_to_utf8(gname); |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
4762 | char *alias = aim_ssi_getalias(sess->ssi.local, gname, curitem->name); |
| 4458 | 4763 | char *alias_utf8 = gaim_try_conv_to_utf8(alias); |
| 4687 | 4764 | struct buddy *buddy = gaim_find_buddy(gc->account, curitem->name); |
| 4458 | 4765 | /* Should gname be freed here? -- elb */ |
|
4754
216cd548ad68
[gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents:
4744
diff
changeset
|
4766 | /* Not with the current code, but that might be cleaner -- med */ |
| 4458 | 4767 | free(alias); |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
4768 | if (buddy) { |
|
4292
249d89e1b14c
[gaim-migrate @ 4545]
Mark Doliner <markdoliner@pidgin.im>
parents:
4282
diff
changeset
|
4769 | /* Get server stored alias */ |
| 4705 | 4770 | if (alias_utf8) { |
| 4771 | g_free(buddy->alias); | |
| 4772 | buddy->alias = g_strdup(alias_utf8); | |
| 4773 | } | |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
4774 | } else { |
| 4687 | 4775 | struct group *g; |
| 4776 | buddy = gaim_buddy_new(gc->account, curitem->name, alias_utf8); | |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
4777 | |
|
4754
216cd548ad68
[gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents:
4744
diff
changeset
|
4778 | if (!(g = gaim_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) { |
| 4687 | 4779 | g = gaim_group_new(gname_utf8 ? gname_utf8 : _("Orphans")); |
|
4754
216cd548ad68
[gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents:
4744
diff
changeset
|
4780 | gaim_blist_add_group(g, NULL); |
|
216cd548ad68
[gaim-migrate @ 5071]
Mark Doliner <markdoliner@pidgin.im>
parents:
4744
diff
changeset
|
4781 | } |
|
5146
56b1615ba288
[gaim-migrate @ 5510]
Mark Doliner <markdoliner@pidgin.im>
parents:
5136
diff
changeset
|
4782 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4783 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4784 | "ssi: adding buddy %s to group %s to local list\n", curitem->name, gname_utf8 ? gname_utf8 : _("Orphans")); |
| 4687 | 4785 | gaim_blist_add_buddy(buddy, g, NULL); |
|
4778
9023518bb545
[gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents:
4776
diff
changeset
|
4786 | export = TRUE; |
|
4251
7d62db57d86a
[gaim-migrate @ 4501]
Mark Doliner <markdoliner@pidgin.im>
parents:
4249
diff
changeset
|
4787 | } |
| 4458 | 4788 | free(gname_utf8); |
| 4789 | free(alias_utf8); | |
| 2991 | 4790 | } |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4791 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4792 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4793 | case 0x0001: { /* Group */ |
|
4282
93cc9fb8e29f
[gaim-migrate @ 4533]
Mark Doliner <markdoliner@pidgin.im>
parents:
4276
diff
changeset
|
4794 | /* Shouldn't add empty groups */ |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4795 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4796 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4797 | case 0x0002: { /* Permit buddy */ |
| 2991 | 4798 | if (curitem->name) { |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4799 | /* if (!find_permdeny_by_name(gc->permit, curitem->name)) { AAA */ |
| 2991 | 4800 | GSList *list; |
| 5575 | 4801 | for (list=account->permit; (list && aim_sncmp(curitem->name, list->data)); list=list->next); |
| 2991 | 4802 | if (!list) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4803 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4804 | "ssi: adding permit buddy %s to local list\n", curitem->name); |
| 5575 | 4805 | gaim_privacy_permit_add(account, curitem->name); |
| 2991 | 4806 | build_allow_list(); |
|
4778
9023518bb545
[gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents:
4776
diff
changeset
|
4807 | export = TRUE; |
| 2991 | 4808 | } |
| 4809 | } | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4810 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4811 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4812 | case 0x0003: { /* Deny buddy */ |
| 2991 | 4813 | if (curitem->name) { |
| 4814 | GSList *list; | |
| 5575 | 4815 | for (list=account->deny; (list && aim_sncmp(curitem->name, list->data)); list=list->next); |
| 2991 | 4816 | if (!list) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4817 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4818 | "ssi: adding deny buddy %s to local list\n", curitem->name); |
| 5575 | 4819 | gaim_privacy_deny_add(account, curitem->name); |
| 2991 | 4820 | build_block_list(); |
|
4778
9023518bb545
[gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents:
4776
diff
changeset
|
4821 | export = TRUE; |
| 2991 | 4822 | } |
| 4823 | } | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4824 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4825 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4826 | case 0x0004: { /* Permit/deny setting */ |
| 2991 | 4827 | if (curitem->data) { |
| 4828 | fu8_t permdeny; | |
| 5575 | 4829 | if ((permdeny = aim_ssi_getpermdeny(sess->ssi.local)) && (permdeny != account->perm_deny)) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4830 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
| 5575 | 4831 | "ssi: changing permdeny from %d to %hhu\n", account->perm_deny, permdeny); |
| 4832 | account->perm_deny = permdeny; | |
| 4833 | if (od->icq && account->perm_deny == 0x03) { | |
| 4342 | 4834 | serv_set_away(gc, "Invisible", ""); |
| 4835 | } | |
|
4778
9023518bb545
[gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents:
4776
diff
changeset
|
4836 | export = TRUE; |
| 2991 | 4837 | } |
| 4838 | } | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4839 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4840 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4841 | case 0x0005: { /* Presence setting */ |
|
3109
c193eb9c1c30
[gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents:
3106
diff
changeset
|
4842 | /* 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
|
4843 | } break; |
| 2991 | 4844 | } /* End of switch on curitem->type */ |
| 4845 | } /* End of for loop */ | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4846 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4847 | /* If changes were made, then flush buddy list to file */ |
|
4778
9023518bb545
[gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents:
4776
diff
changeset
|
4848 | if (export) |
| 4349 | 4849 | gaim_blist_save(); |
| 2991 | 4850 | |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4851 | { /* Add from local list to server list */ |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4852 | GaimBlistNode *gnode, *bnode; |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4853 | struct group *group; |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4854 | struct buddy *buddy; |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4855 | struct gaim_buddy_list *blist; |
|
3017
e01d7ec2b5db
[gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents:
3016
diff
changeset
|
4856 | GSList *cur; |
|
e01d7ec2b5db
[gaim-migrate @ 3030]
Mark Doliner <markdoliner@pidgin.im>
parents:
3016
diff
changeset
|
4857 | |
| 2991 | 4858 | /* Buddies */ |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4859 | if ((blist = gaim_get_blist())) |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4860 | for (gnode = blist->root; gnode; gnode = gnode->next) { |
| 5234 | 4861 | if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) |
| 4862 | continue; | |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4863 | group = (struct group *)gnode; |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4864 | for (bnode = gnode->child; bnode; bnode = bnode->next) { |
| 5234 | 4865 | if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) |
| 4866 | continue; | |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4867 | buddy = (struct buddy *)bnode; |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4868 | if (buddy->account == gc->account) { |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4869 | gchar *servernick = gaim_buddy_get_setting(buddy, "servernick"); |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4870 | if (servernick) { |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4871 | serv_got_alias(gc, buddy->name, servernick); |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4872 | g_free(servernick); |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4873 | } |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4874 | if (aim_ssi_itemlist_exists(sess->ssi.local, buddy->name)) { |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4875 | /* Store local alias on server */ |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4876 | char *alias = aim_ssi_getalias(sess->ssi.local, group->name, buddy->name); |
|
4783
5f864446c439
[gaim-migrate @ 5103]
Mark Doliner <markdoliner@pidgin.im>
parents:
4782
diff
changeset
|
4877 | if (!alias && buddy->alias && strlen(buddy->alias)) |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
4878 | aim_ssi_aliasbuddy(sess, group->name, buddy->name, buddy->alias); |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4879 | free(alias); |
|
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4880 | } else { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4881 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4882 | "ssi: adding buddy %s from local list to server list\n", buddy->name); |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
4883 | aim_ssi_addbuddy(sess, buddy->name, group->name, gaim_get_buddy_alias_only(buddy), NULL, NULL, 0); |
|
4759
5a8c326b49b3
[gaim-migrate @ 5076]
Mark Doliner <markdoliner@pidgin.im>
parents:
4754
diff
changeset
|
4884 | } |
| 4349 | 4885 | } |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4886 | } |
|
4292
249d89e1b14c
[gaim-migrate @ 4545]
Mark Doliner <markdoliner@pidgin.im>
parents:
4282
diff
changeset
|
4887 | } |
| 2991 | 4888 | /* Permit list */ |
| 4491 | 4889 | if (gc->account->permit) { |
| 4890 | for (cur=gc->account->permit; cur; cur=cur->next) | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4891 | if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_PERMIT)) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4892 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4893 | "ssi: adding permit %s from local list to server list\n", (char *)cur->data); |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
4894 | aim_ssi_addpermit(sess, cur->data); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4895 | } |
| 2991 | 4896 | } |
| 4897 | ||
| 4898 | /* Deny list */ | |
| 4491 | 4899 | if (gc->account->deny) { |
| 4900 | for (cur=gc->account->deny; cur; cur=cur->next) | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4901 | if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_DENY)) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4902 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4903 | "ssi: adding deny %s from local list to server list\n", (char *)cur->data); |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
4904 | aim_ssi_adddeny(sess, cur->data); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4905 | } |
| 2991 | 4906 | } |
|
3109
c193eb9c1c30
[gaim-migrate @ 3123]
Mark Doliner <markdoliner@pidgin.im>
parents:
3106
diff
changeset
|
4907 | /* Presence settings (idle time visibility) */ |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4908 | if ((tmp = aim_ssi_getpresence(sess->ssi.local)) != 0xFFFFFFFF) |
| 5631 | 4909 | if (!(tmp & 0x400)) |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
4910 | aim_ssi_setpresence(sess, tmp | 0x400); |
|
4778
9023518bb545
[gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents:
4776
diff
changeset
|
4911 | } /* end adding buddies from local list to server list */ |
|
9023518bb545
[gaim-migrate @ 5098]
Mark Doliner <markdoliner@pidgin.im>
parents:
4776
diff
changeset
|
4912 | |
|
4901
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
4913 | /* Set our ICQ status */ |
|
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
4914 | if (od->icq && !gc->away) { |
|
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
4915 | aim_setextstatus(sess, AIM_ICQ_STATE_NORMAL); |
|
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
4916 | } |
|
8a9aebd9897f
[gaim-migrate @ 5235]
Mark Doliner <markdoliner@pidgin.im>
parents:
4898
diff
changeset
|
4917 | |
| 4342 | 4918 | /* Activate SSI */ |
| 4919 | /* Sending the enable causes other people to be able to see you, and you to see them */ | |
| 4920 | /* Make sure your privacy setting/invisibility is set how you want it before this! */ | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4921 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4922 | "ssi: activating server-stored buddy list\n"); |
|
4642
a491791dc1a1
[gaim-migrate @ 4952]
Mark Doliner <markdoliner@pidgin.im>
parents:
4641
diff
changeset
|
4923 | aim_ssi_enable(sess); |
| 4342 | 4924 | |
| 2991 | 4925 | return 1; |
| 2086 | 4926 | } |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4927 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4928 | static int gaim_ssi_parseack(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 4929 | GaimConnection *gc = sess->aux_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4930 | va_list ap; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4931 | struct aim_ssi_tmp *retval; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4932 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4933 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4934 | retval = va_arg(ap, struct aim_ssi_tmp *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4935 | va_end(ap); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4936 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4937 | while (retval) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4938 | gaim_debug(GAIM_DEBUG_MISC, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4939 | "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
|
4940 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4941 | if (retval->ack != 0xffff) |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4942 | switch (retval->ack) { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4943 | case 0x0000: { /* added successfully */ |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4944 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4945 | |
|
4829
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
4946 | 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
|
4947 | gchar *buf; |
|
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
4948 | 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)"))); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4949 | gaim_notify_error(gc, NULL, _("Unable To Add"), buf); |
|
4829
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
4950 | g_free(buf); |
|
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
4951 | } |
|
9dd8fea5795e
[gaim-migrate @ 5154]
Mark Doliner <markdoliner@pidgin.im>
parents:
4828
diff
changeset
|
4952 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4953 | case 0x000e: { /* contact requires authorization */ |
|
4828
a7a331159e7d
[gaim-migrate @ 5153]
Mark Doliner <markdoliner@pidgin.im>
parents:
4827
diff
changeset
|
4954 | if ((retval->action == AIM_CB_SSI_ADD) && (retval->name)) |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
4955 | gaim_auth_sendrequest(gc, retval->name); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4956 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4957 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4958 | default: { /* La la la */ |
|
5197
ab4d919050d7
[gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents:
5167
diff
changeset
|
4959 | gchar *buf; |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
4960 | gaim_debug(GAIM_DEBUG_ERROR, "oscar", "ssi: Action 0x%04hx was unsuccessful with error 0x%04hx\n", retval->action, retval->ack); |
|
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
4961 | 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)"))); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
4962 | gaim_notify_error(gc, NULL, _("Unable To Add"), buf); |
|
5197
ab4d919050d7
[gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents:
5167
diff
changeset
|
4963 | g_free(buf); |
|
5402
72ff435414e1
[gaim-migrate @ 5778]
Mark Doliner <markdoliner@pidgin.im>
parents:
5388
diff
changeset
|
4964 | /* XXX - Should remove buddy from local list */ |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4965 | } break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4966 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4967 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4968 | retval = retval->next; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4969 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4970 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4971 | return 1; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4972 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4973 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4974 | static int gaim_ssi_authgiven(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 4975 | GaimConnection *gc = sess->aux_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4976 | va_list ap; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4977 | char *sn, *msg; |
| 4236 | 4978 | gchar *dialog_msg, *nombre; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4979 | struct name_data *data; |
| 4236 | 4980 | struct buddy *buddy; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4981 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4982 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4983 | sn = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4984 | msg = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4985 | va_end(ap); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4986 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4987 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
4988 | "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
|
4989 | |
| 4687 | 4990 | buddy = gaim_find_buddy(gc->account, sn); |
| 4991 | if (buddy && (gaim_get_buddy_alias_only(buddy))) | |
| 4992 | nombre = g_strdup_printf("%s (%s)", sn, gaim_get_buddy_alias_only(buddy)); | |
| 4236 | 4993 | else |
| 4994 | nombre = g_strdup(sn); | |
| 4995 | ||
| 4996 | 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
|
4997 | data = g_new(struct name_data, 1); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4998 | data->gc = gc; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
4999 | data->name = g_strdup(sn); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5000 | data->nick = NULL; |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
5001 | |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
5002 | gaim_request_yes_no(gc, NULL, _("Authorization Given"), dialog_msg, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
5003 | 0, data, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
5004 | G_CALLBACK(gaim_icq_contactadd), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
5005 | G_CALLBACK(gaim_free_name_data)); |
| 4236 | 5006 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5007 | g_free(dialog_msg); |
| 4236 | 5008 | g_free(nombre); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5009 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5010 | return 1; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5011 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5012 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5013 | static int gaim_ssi_authrequest(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 5014 | GaimConnection *gc = sess->aux_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5015 | va_list ap; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5016 | char *sn, *msg; |
| 4236 | 5017 | gchar *dialog_msg, *nombre; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5018 | struct name_data *data; |
| 4236 | 5019 | struct buddy *buddy; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5020 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5021 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5022 | sn = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5023 | msg = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5024 | va_end(ap); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5025 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5026 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5027 | "ssi: received authorization request from %s\n", sn); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5028 | |
| 4687 | 5029 | buddy = gaim_find_buddy(gc->account, sn); |
| 5030 | if (buddy && (gaim_get_buddy_alias_only(buddy))) | |
| 5031 | nombre = g_strdup_printf("%s (%s)", sn, gaim_get_buddy_alias_only(buddy)); | |
| 4236 | 5032 | else |
| 5033 | nombre = g_strdup(sn); | |
| 5034 | ||
|
4337
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
5035 | 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
|
5036 | data = g_new(struct name_data, 1); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5037 | data->gc = gc; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5038 | data->name = g_strdup(sn); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5039 | data->nick = NULL; |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
5040 | |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
5041 | gaim_request_action(gc, NULL, _("Authorization Request"), dialog_msg, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
5042 | 0, data, 2, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
5043 | _("Authorize"), G_CALLBACK(gaim_auth_grant), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
5044 | _("Deny"), G_CALLBACK(gaim_auth_dontgrant_msgprompt)); |
| 4236 | 5045 | |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5046 | g_free(dialog_msg); |
| 4236 | 5047 | g_free(nombre); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5048 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5049 | return 1; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5050 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5051 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5052 | static int gaim_ssi_authreply(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 5053 | GaimConnection *gc = sess->aux_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5054 | va_list ap; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5055 | char *sn, *msg; |
| 4236 | 5056 | gchar *dialog_msg, *nombre; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5057 | fu8_t reply; |
| 4236 | 5058 | struct buddy *buddy; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5059 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5060 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5061 | sn = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5062 | reply = (fu8_t)va_arg(ap, int); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5063 | msg = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5064 | va_end(ap); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5065 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5066 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5067 | "ssi: received authorization reply from %s. Reply is 0x%04hhx\n", sn, reply); |
| 4236 | 5068 | |
| 4687 | 5069 | buddy = gaim_find_buddy(gc->account, sn); |
| 5070 | if (buddy && (gaim_get_buddy_alias_only(buddy))) | |
| 5071 | nombre = g_strdup_printf("%s (%s)", sn, gaim_get_buddy_alias_only(buddy)); | |
| 4236 | 5072 | else |
| 5073 | nombre = g_strdup(sn); | |
| 5074 | ||
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5075 | if (reply) { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5076 | /* Granted */ |
| 4236 | 5077 | dialog_msg = g_strdup_printf(_("The user %s has granted your request to add them to your contact list."), nombre); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5078 | gaim_notify_info(gc, NULL, _("Authorization Granted"), dialog_msg); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5079 | } else { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5080 | /* Denied */ |
| 4236 | 5081 | dialog_msg = g_strdup_printf(_("The user %s has denied your request to add them to your contact list for the following reason:\n%s"), nombre, msg ? msg : _("No reason given.")); |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5082 | gaim_notify_info(gc, NULL, _("Authorization Denied"), dialog_msg); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5083 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5084 | g_free(dialog_msg); |
| 4236 | 5085 | g_free(nombre); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5086 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5087 | return 1; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5088 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5089 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5090 | static int gaim_ssi_gotadded(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 5091 | GaimConnection *gc = sess->aux_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5092 | va_list ap; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5093 | char *sn; |
| 4236 | 5094 | struct buddy *buddy; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5095 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5096 | va_start(ap, fr); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5097 | sn = va_arg(ap, char *); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5098 | va_end(ap); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5099 | |
| 4687 | 5100 | buddy = gaim_find_buddy(gc->account, sn); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5101 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5102 | "ssi: %s added you to their buddy list\n", sn); |
| 4687 | 5103 | show_got_added(gc, NULL, sn, (buddy ? gaim_get_buddy_alias_only(buddy) : NULL), NULL); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5104 | |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5105 | return 1; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5106 | } |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5107 | #endif |
| 2086 | 5108 | |
| 5575 | 5109 | static GList *oscar_chat_info(GaimConnection *gc) { |
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5110 | GList *m = NULL; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5111 | struct proto_chat_entry *pce; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5112 | |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5113 | pce = g_new0(struct proto_chat_entry, 1); |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5114 | pce->label = _("Join what group:"); |
| 5234 | 5115 | pce->identifier = "room"; |
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5116 | m = g_list_append(m, pce); |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5117 | |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5118 | pce = g_new0(struct proto_chat_entry, 1); |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5119 | pce->label = _("Exchange:"); |
| 5234 | 5120 | pce->identifier = "exchange"; |
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5121 | pce->is_int = TRUE; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5122 | pce->min = 4; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5123 | pce->max = 20; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5124 | m = g_list_append(m, pce); |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5125 | |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5126 | return m; |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5127 | } |
|
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5128 | |
| 5575 | 5129 | static void oscar_join_chat(GaimConnection *g, GHashTable *data) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5130 | struct oscar_data *od = (struct oscar_data *)g->proto_data; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5131 | aim_conn_t *cur; |
| 5234 | 5132 | char *name, *exchange; |
| 5133 | ||
| 5134 | name = g_hash_table_lookup(data, "room"); | |
| 5135 | exchange = g_hash_table_lookup(data, "exchange"); | |
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2197
diff
changeset
|
5136 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5137 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5138 | "Attempting to join chat room %s.\n", name); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5139 | if ((cur = aim_getconn_type(od->sess, AIM_CONN_TYPE_CHATNAV))) { |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5140 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5141 | "chatnav exists, creating room\n"); |
| 5234 | 5142 | aim_chatnav_createroom(od->sess, cur, name, atoi(exchange)); |
| 2086 | 5143 | } else { |
| 5144 | /* this gets tricky */ | |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
5145 | struct create_room *cr = g_new0(struct create_room, 1); |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5146 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5147 | "chatnav does not exist, opening chatnav\n"); |
| 5234 | 5148 | cr->exchange = atoi(exchange); |
|
2822
a1ddcd96da44
[gaim-migrate @ 2835]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2821
diff
changeset
|
5149 | cr->name = g_strdup(name); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5150 | od->create_rooms = g_slist_append(od->create_rooms, cr); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5151 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_CHATNAV); |
| 2086 | 5152 | } |
| 5153 | } | |
| 5154 | ||
| 5575 | 5155 | static void oscar_chat_invite(GaimConnection *g, int id, const char *message, const char *name) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5156 | struct oscar_data *od = (struct oscar_data *)g->proto_data; |
| 2086 | 5157 | struct chat_connection *ccon = find_oscar_chat(g, id); |
| 5158 | ||
| 5159 | if (!ccon) | |
| 5160 | return; | |
| 5161 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5162 | aim_chat_invite(od->sess, od->conn, name, message ? message : "", |
| 2086 | 5163 | ccon->exchange, ccon->name, 0x0); |
| 5164 | } | |
| 5165 | ||
| 5575 | 5166 | static void oscar_chat_leave(GaimConnection *g, int id) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5167 | struct oscar_data *od = g ? (struct oscar_data *)g->proto_data : NULL; |
| 2086 | 5168 | GSList *bcs = g->buddy_chats; |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
5169 | struct gaim_conversation *b = NULL; |
| 2086 | 5170 | struct chat_connection *c = NULL; |
| 5171 | int count = 0; | |
| 5172 | ||
| 5173 | while (bcs) { | |
| 5174 | count++; | |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
5175 | b = (struct gaim_conversation *)bcs->data; |
|
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
5176 | if (id == gaim_chat_get_id(GAIM_CHAT(b))) |
| 2086 | 5177 | break; |
| 5178 | bcs = bcs->next; | |
| 5179 | b = NULL; | |
| 5180 | } | |
| 5181 | ||
| 5182 | if (!b) | |
| 5183 | return; | |
| 5184 | ||
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5185 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5186 | "Attempting to leave room %s (currently in %d rooms)\n", b->name, count); |
| 2086 | 5187 | |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
5188 | c = find_oscar_chat(g, gaim_chat_get_id(GAIM_CHAT(b))); |
| 2086 | 5189 | if (c != NULL) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5190 | if (od) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5191 | od->oscar_chats = g_slist_remove(od->oscar_chats, c); |
| 2086 | 5192 | if (c->inpa > 0) |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
5193 | gaim_input_remove(c->inpa); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5194 | if (g && od->sess) |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5195 | aim_conn_kill(od->sess, &c->conn); |
| 2086 | 5196 | g_free(c->name); |
| 5197 | g_free(c->show); | |
| 5198 | g_free(c); | |
| 5199 | } | |
| 5200 | /* we do this because with Oscar it doesn't tell us we left */ | |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
5201 | serv_got_chat_left(g, gaim_chat_get_id(GAIM_CHAT(b))); |
| 2086 | 5202 | } |
| 5203 | ||
| 5575 | 5204 | static int oscar_chat_send(GaimConnection *g, int id, char *message) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5205 | struct oscar_data *od = (struct oscar_data *)g->proto_data; |
| 2086 | 5206 | GSList *bcs = g->buddy_chats; |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
5207 | struct gaim_conversation *b = NULL; |
| 2086 | 5208 | struct chat_connection *c = NULL; |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5209 | char *buf, *buf2; |
| 2086 | 5210 | int i, j; |
| 5211 | ||
| 5212 | while (bcs) { | |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
5213 | b = (struct gaim_conversation *)bcs->data; |
|
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
5214 | if (id == gaim_chat_get_id(GAIM_CHAT(b))) |
| 2086 | 5215 | break; |
| 5216 | bcs = bcs->next; | |
| 5217 | b = NULL; | |
| 5218 | } | |
| 5219 | if (!b) | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5220 | return -EINVAL; |
| 2086 | 5221 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5222 | bcs = od->oscar_chats; |
| 2086 | 5223 | while (bcs) { |
| 5224 | c = (struct chat_connection *)bcs->data; | |
| 5225 | if (b == c->cnv) | |
| 5226 | break; | |
| 5227 | bcs = bcs->next; | |
| 5228 | c = NULL; | |
| 5229 | } | |
| 5230 | if (!c) | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5231 | return -EINVAL; |
| 2086 | 5232 | |
| 5233 | buf = g_malloc(strlen(message) * 4 + 1); | |
| 5234 | for (i = 0, j = 0; i < strlen(message); i++) { | |
| 5235 | if (message[i] == '\n') { | |
| 5236 | buf[j++] = '<'; | |
| 5237 | buf[j++] = 'B'; | |
| 5238 | buf[j++] = 'R'; | |
| 5239 | buf[j++] = '>'; | |
| 5240 | } else { | |
| 5241 | buf[j++] = message[i]; | |
| 5242 | } | |
| 5243 | } | |
| 5244 | buf[j] = '\0'; | |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5245 | |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5246 | if (strlen(buf) > c->maxlen) |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5247 | return -E2BIG; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5248 | |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5249 | buf2 = strip_html(buf); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5250 | if (strlen(buf2) > c->maxvis) { |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5251 | g_free(buf2); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5252 | return -E2BIG; |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5253 | } |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5254 | g_free(buf2); |
|
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5255 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5256 | aim_chat_send_im(od->sess, c->conn, 0, buf, strlen(buf)); |
| 2086 | 5257 | g_free(buf); |
|
2167
cbb558585911
[gaim-migrate @ 2177]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2162
diff
changeset
|
5258 | return 0; |
| 2086 | 5259 | } |
| 5260 | ||
| 5575 | 5261 | static const char *oscar_list_icon(GaimAccount *a, struct buddy *b) { |
|
4766
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
5262 | if (!b || (b && b->name && b->name[0] == '+')) { |
| 4687 | 5263 | if (isdigit(a->username[0])) |
| 5264 | return "icq"; | |
| 5265 | else | |
| 5266 | return "aim"; | |
| 5267 | } | |
| 5268 | ||
| 5269 | if (isdigit(b->name[0])) | |
| 5270 | return "icq"; | |
| 5271 | return "aim"; | |
| 5272 | } | |
| 5273 | ||
| 4690 | 5274 | static void oscar_list_emblems(struct buddy *b, char **se, char **sw, char **nw, char **ne) |
| 4687 | 5275 | { |
| 5276 | char *emblems[4] = {NULL,NULL,NULL,NULL}; | |
| 5277 | int i = 0; | |
| 5278 | ||
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5279 | if (!GAIM_BUDDY_IS_ONLINE(b)) { |
| 5575 | 5280 | GaimAccount *account; |
| 5281 | GaimConnection *gc; | |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5282 | struct oscar_data *od; |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5283 | char *gname; |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5284 | if ((b->name) && (account = b->account) && (gc = account->gc) && |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5285 | (od = gc->proto_data) && (od->sess->ssi.received_data) && |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5286 | (gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name)) && |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5287 | (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name))) { |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5288 | emblems[i++] = "notauthorized"; |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5289 | } else { |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5290 | emblems[i++] = "offline"; |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5291 | } |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5292 | } |
| 4916 | 5293 | |
|
4766
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
5294 | if (b->name && (b->uc & 0xffff0000) && isdigit(b->name[0])) { |
|
4960
65bf67b7600f
[gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents:
4959
diff
changeset
|
5295 | int uc = b->uc >> 16; |
|
4766
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
5296 | if (uc & AIM_ICQ_STATE_INVISIBLE) |
|
4960
65bf67b7600f
[gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents:
4959
diff
changeset
|
5297 | emblems[i++] = "invisible"; |
|
4766
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
5298 | else if (uc & AIM_ICQ_STATE_CHAT) |
|
4960
65bf67b7600f
[gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents:
4959
diff
changeset
|
5299 | emblems[i++] = "freeforchat"; |
|
4766
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
5300 | else if (uc & AIM_ICQ_STATE_DND) |
|
4960
65bf67b7600f
[gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents:
4959
diff
changeset
|
5301 | emblems[i++] = "dnd"; |
|
4766
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
5302 | else if (uc & AIM_ICQ_STATE_OUT) |
|
4960
65bf67b7600f
[gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents:
4959
diff
changeset
|
5303 | emblems[i++] = "na"; |
|
4766
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
5304 | else if (uc & AIM_ICQ_STATE_BUSY) |
|
4960
65bf67b7600f
[gaim-migrate @ 5294]
Mark Doliner <markdoliner@pidgin.im>
parents:
4959
diff
changeset
|
5305 | emblems[i++] = "occupied"; |
|
4766
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
5306 | else if (uc & AIM_ICQ_STATE_AWAY) |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
5307 | emblems[i++] = "away"; |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
5308 | } else { |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
5309 | if (b->uc & UC_UNAVAILABLE) |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
5310 | emblems[i++] = "away"; |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
5311 | } |
| 4687 | 5312 | if (b->uc & UC_WIRELESS) |
| 5313 | emblems[i++] = "wireless"; | |
| 5314 | if (b->uc & UC_AOL) | |
| 5315 | emblems[i++] = "aol"; | |
| 5316 | if (b->uc & UC_ADMIN) | |
| 5317 | emblems[i++] = "admin"; | |
| 5318 | if (b->uc & UC_AB && i < 4) | |
| 5319 | emblems[i++] = "activebuddy"; | |
|
4766
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
5320 | /* if (b->uc & UC_UNCONFIRMED && i < 4) |
|
4fa5a774d200
[gaim-migrate @ 5084]
Mark Doliner <markdoliner@pidgin.im>
parents:
4763
diff
changeset
|
5321 | emblems[i++] = "unconfirmed"; */ |
| 4687 | 5322 | *se = emblems[0]; |
| 5323 | *sw = emblems[1]; | |
| 5324 | *nw = emblems[2]; | |
| 5325 | *ne = emblems[3]; | |
| 5326 | } | |
| 5327 | ||
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5328 | static char *oscar_tooltip_text(struct buddy *b) { |
| 5575 | 5329 | GaimConnection *gc = b->account->gc; |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5330 | struct oscar_data *od = gc->proto_data; |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5331 | struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, normalize(b->name)); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5332 | gchar *tmp, *yay = g_strdup(""); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5333 | |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5334 | if (GAIM_BUDDY_IS_ONLINE(b)) { |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5335 | if (isdigit(b->name[0])) { |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5336 | char *tmp, *status; |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5337 | status = gaim_icq_status((b->uc & 0xffff0000) >> 16); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5338 | tmp = yay; |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5339 | yay = g_strconcat(tmp, _("<b>Status:</b> "), status, "\n", NULL); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5340 | g_free(tmp); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5341 | g_free(status); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5342 | } |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5343 | |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5344 | if (bi) { |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5345 | char *tstr = sec_to_text(time(NULL) - bi->signon + |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5346 | (gc->login_time_official ? gc->login_time_official - gc->login_time : 0)); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5347 | tmp = yay; |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5348 | yay = g_strconcat(tmp, _("<b>Logged In:</b> "), tstr, "\n", NULL); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5349 | free(tmp); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5350 | free(tstr); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5351 | |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5352 | if (bi->caps) { |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5353 | char *caps = caps_string(bi->caps); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5354 | tmp = yay; |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5355 | yay = g_strconcat(tmp, _("<b>Capabilities:</b> "), caps, "\n", NULL); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5356 | free(tmp); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5357 | } |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5358 | } |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5359 | } else { |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5360 | char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, b->name); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5361 | if (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name)) { |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5362 | tmp = yay; |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5363 | yay = g_strconcat(tmp, _("<b>Status:</b> Not Authorized"), "\n", NULL); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5364 | g_free(tmp); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5365 | } else { |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5366 | tmp = yay; |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5367 | yay = g_strconcat(tmp, _("<b>Status:</b> Offline"), "\n", NULL); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5368 | g_free(tmp); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5369 | } |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5370 | } |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5371 | |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5372 | /* remove the trailing newline character */ |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5373 | if (yay) |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5374 | yay[strlen(yay)-1] = '\0'; |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5375 | return yay; |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5376 | } |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5377 | |
|
5167
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5378 | static char *oscar_status_text(struct buddy *b) { |
| 5575 | 5379 | GaimConnection *gc = b->account->gc; |
|
5167
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5380 | struct oscar_data *od = gc->proto_data; |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5381 | gchar *ret = NULL; |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5382 | |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5383 | if ((b->uc & UC_UNAVAILABLE) || (((b->uc & 0xffff0000) >> 16) & AIM_ICQ_STATE_CHAT)) { |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5384 | if (isdigit(b->name[0])) |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5385 | ret = gaim_icq_status((b->uc & 0xffff0000) >> 16); |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5386 | else |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5387 | ret = g_strdup(_("Away")); |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5388 | } else if (!GAIM_BUDDY_IS_ONLINE(b)) { |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5389 | 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
|
5390 | if (aim_ssi_waitingforauth(od->sess->ssi.local, gname, b->name)) |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5391 | ret = g_strdup(_("Not Authorized")); |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5392 | else |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5393 | ret = g_strdup(_("Offline")); |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5394 | } |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5395 | |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5396 | return ret; |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5397 | } |
|
e6674b684b55
[gaim-migrate @ 5531]
Mark Doliner <markdoliner@pidgin.im>
parents:
5163
diff
changeset
|
5398 | |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
5399 | /* |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5400 | * We have just established a socket with the other dude, so set up some handlers. |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
5401 | */ |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5402 | static int gaim_odc_initiate(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 5403 | GaimConnection *gc = sess->aux_data; |
| 2086 | 5404 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
5405 | struct gaim_conversation *cnv; |
| 2086 | 5406 | struct direct_im *dim; |
| 5407 | char buf[256]; | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5408 | char *sn; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5409 | va_list ap; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5410 | aim_conn_t *newconn, *listenerconn; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5411 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5412 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5413 | newconn = va_arg(ap, aim_conn_t *); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5414 | listenerconn = va_arg(ap, aim_conn_t *); |
| 2086 | 5415 | va_end(ap); |
| 5416 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5417 | aim_conn_close(listenerconn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5418 | aim_conn_kill(sess, &listenerconn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5419 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5420 | sn = g_strdup(aim_odc_getsn(newconn)); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5421 | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5422 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5423 | "DirectIM: initiate success to %s\n", sn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5424 | dim = find_direct_im(od, sn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5425 | |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
5426 | if (!(cnv = gaim_find_conversation(sn))) |
| 4491 | 5427 | cnv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, sn); |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
5428 | gaim_input_remove(dim->watcher); |
| 2086 | 5429 | dim->conn = newconn; |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5430 | dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, oscar_callback, dim->conn); |
| 3008 | 5431 | dim->connected = TRUE; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5432 | g_snprintf(buf, sizeof buf, _("Direct IM with %s established"), sn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5433 | g_free(sn); |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
5434 | gaim_conversation_write(cnv, NULL, buf, -1, WFLAG_SYSTEM, time(NULL)); |
| 2086 | 5435 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5436 | aim_conn_addhandler(sess, newconn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMINCOMING, gaim_odc_incoming, 0); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5437 | aim_conn_addhandler(sess, newconn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIMTYPING, gaim_odc_typing, 0); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5438 | aim_conn_addhandler(sess, newconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_IMAGETRANSFER, gaim_update_ui, 0); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5439 | |
| 2993 | 5440 | return 1; |
| 5441 | } | |
| 5442 | ||
| 5443 | static int gaim_update_ui(aim_session_t *sess, aim_frame_t *fr, ...) { | |
| 5444 | va_list ap; | |
| 5445 | char *sn; | |
| 5446 | double percent; | |
| 5575 | 5447 | GaimConnection *gc = sess->aux_data; |
| 2993 | 5448 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
5449 | struct gaim_conversation *c; |
| 2993 | 5450 | struct direct_im *dim; |
| 5451 | ||
| 5452 | va_start(ap, fr); | |
| 5453 | sn = va_arg(ap, char *); | |
| 5454 | percent = va_arg(ap, double); | |
| 5455 | va_end(ap); | |
| 5456 | ||
| 2994 | 5457 | if (!(dim = find_direct_im(od, sn))) |
| 5458 | return 1; | |
|
3059
bd4d661482f5
[gaim-migrate @ 3073]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3048
diff
changeset
|
5459 | if (dim->watcher) { |
|
bd4d661482f5
[gaim-migrate @ 3073]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3048
diff
changeset
|
5460 | gaim_input_remove(dim->watcher); /* Otherwise, the callback will callback */ |
|
bd4d661482f5
[gaim-migrate @ 3073]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3048
diff
changeset
|
5461 | dim->watcher = 0; |
|
bd4d661482f5
[gaim-migrate @ 3073]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3048
diff
changeset
|
5462 | } |
| 3044 | 5463 | while (gtk_events_pending()) |
| 5464 | gtk_main_iteration(); | |
| 5465 | ||
|
4359
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
5466 | if ((c = gaim_find_conversation(sn))) |
|
cf899ee07d1d
[gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
4358
diff
changeset
|
5467 | gaim_conversation_update_progress(c, percent); |
| 2993 | 5468 | dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, |
| 5469 | oscar_callback, dim->conn); | |
| 2086 | 5470 | |
| 5471 | return 1; | |
| 5472 | } | |
| 5473 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5474 | static int gaim_odc_incoming(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 5575 | 5475 | GaimConnection *gc = sess->aux_data; |
|
4870
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
5476 | int imflags = 0; |
| 2086 | 5477 | va_list ap; |
|
4870
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
5478 | char *sn, *msg; |
|
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
5479 | int len, encoding, isawaymsg; |
| 2086 | 5480 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5481 | va_start(ap, fr); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5482 | sn = va_arg(ap, char *); |
| 2086 | 5483 | msg = va_arg(ap, char *); |
| 2993 | 5484 | len = va_arg(ap, int); |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3912
diff
changeset
|
5485 | encoding = va_arg(ap, int); |
|
4870
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
5486 | isawaymsg = va_arg(ap, int); |
| 2086 | 5487 | va_end(ap); |
| 5488 | ||
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5489 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5490 | "Got DirectIM message from %s\n", sn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5491 | |
|
4870
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
5492 | if (isawaymsg) |
|
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
5493 | imflags |= IM_FLAG_AWAY; |
|
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
5494 | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5495 | /* XXX - I imagine Paco-Paco will want to do some voodoo with the encoding here */ |
|
4870
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
5496 | serv_got_im(gc, sn, msg, imflags, time(NULL), len); |
| 2086 | 5497 | |
| 5498 | return 1; | |
| 5499 | } | |
| 5500 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5501 | static int gaim_odc_typing(aim_session_t *sess, aim_frame_t *fr, ...) { |
| 2086 | 5502 | va_list ap; |
| 5503 | char *sn; | |
| 2993 | 5504 | int typing; |
| 5575 | 5505 | GaimConnection *gc = sess->aux_data; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5506 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
5507 | va_start(ap, fr); |
| 2086 | 5508 | sn = va_arg(ap, char *); |
| 2993 | 5509 | typing = va_arg(ap, int); |
| 2086 | 5510 | va_end(ap); |
| 5511 | ||
|
4870
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
5512 | if (typing == 0x0002) { |
| 2993 | 5513 | /* I had to leave this. It's just too funny. It reminds me of my sister. */ |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5514 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5515 | "ohmigod! %s has started typing (DirectIM). He's going to send you a message! *squeal*\n", sn); |
| 4342 | 5516 | serv_got_typing(gc, sn, 0, TYPING); |
|
4870
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
5517 | } else if (typing == 0x0001) |
|
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
5518 | serv_got_typing(gc, sn, 0, TYPED); |
|
50dac8774e21
[gaim-migrate @ 5200]
Mark Doliner <markdoliner@pidgin.im>
parents:
4853
diff
changeset
|
5519 | else |
| 4342 | 5520 | serv_got_typing_stopped(gc, sn); |
| 2086 | 5521 | return 1; |
| 5522 | } | |
| 5523 | ||
| 5524 | struct ask_do_dir_im { | |
| 5525 | char *who; | |
| 5575 | 5526 | GaimConnection *gc; |
| 2086 | 5527 | }; |
| 5528 | ||
| 3730 | 5529 | static void oscar_cancel_direct_im(struct ask_do_dir_im *data) { |
| 5136 | 5530 | g_free(data->who); |
| 2086 | 5531 | g_free(data); |
| 5532 | } | |
| 5533 | ||
| 3730 | 5534 | static void oscar_direct_im(struct ask_do_dir_im *data) { |
| 5575 | 5535 | GaimConnection *gc = data->gc; |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
5536 | struct oscar_data *od; |
| 2086 | 5537 | struct direct_im *dim; |
| 5538 | ||
|
5580
a5a3e6dfb409
[gaim-migrate @ 5984]
Christian Hammond <chipx86@chipx86.com>
parents:
5579
diff
changeset
|
5539 | if (!g_list_find(gaim_connections_get_all(), gc)) { |
| 5136 | 5540 | g_free(data->who); |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
5541 | g_free(data); |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
5542 | return; |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
5543 | } |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
5544 | |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
5545 | od = (struct oscar_data *)gc->proto_data; |
|
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
5546 | |
| 2086 | 5547 | dim = find_direct_im(od, data->who); |
| 5548 | if (dim) { | |
| 3008 | 5549 | if (!(dim->connected)) { /* We'll free the old, unconnected dim, and start over */ |
| 5550 | od->direct_ims = g_slist_remove(od->direct_ims, dim); | |
| 5551 | gaim_input_remove(dim->watcher); | |
| 5552 | g_free(dim); | |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5553 | gaim_debug(GAIM_DEBUG_INFO, "oscar", |
|
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5554 | "Gave up on old direct IM, trying again\n"); |
| 3008 | 5555 | } else { |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5556 | gaim_notify_error(gc, NULL, "DirectIM already open.", NULL); |
| 5136 | 5557 | g_free(data->who); |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
5558 | g_free(data); |
| 3008 | 5559 | return; |
| 5560 | } | |
| 2086 | 5561 | } |
| 5562 | dim = g_new0(struct direct_im, 1); | |
| 5563 | dim->gc = gc; | |
| 5564 | g_snprintf(dim->name, sizeof dim->name, "%s", data->who); | |
| 5565 | ||
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5566 | dim->conn = aim_odc_initiate(od->sess, data->who); |
| 2086 | 5567 | if (dim->conn != NULL) { |
| 5568 | od->direct_ims = g_slist_append(od->direct_ims, dim); | |
|
2090
bab8b7e309db
[gaim-migrate @ 2100]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
5569 | dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ, |
| 2086 | 5570 | oscar_callback, dim->conn); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5571 | aim_conn_addhandler(od->sess, dim->conn, AIM_CB_FAM_OFT, AIM_CB_OFT_DIRECTIM_ESTABLISHED, |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5572 | gaim_odc_initiate, 0); |
| 2086 | 5573 | } else { |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5574 | gaim_notify_error(gc, NULL, _("Unable to open Direct IM"), NULL); |
| 2086 | 5575 | g_free(dim); |
| 5576 | } | |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
5577 | |
| 5136 | 5578 | g_free(data->who); |
|
4244
3a0952e07004
[gaim-migrate @ 4494]
Mark Doliner <markdoliner@pidgin.im>
parents:
4243
diff
changeset
|
5579 | g_free(data); |
| 2086 | 5580 | } |
| 5581 | ||
| 5575 | 5582 | static void oscar_ask_direct_im(GaimConnection *gc, const char *who) { |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
5583 | gchar *buf; |
| 2086 | 5584 | struct ask_do_dir_im *data = g_new0(struct ask_do_dir_im, 1); |
| 5136 | 5585 | data->who = g_strdup(who); |
|
2170
5c93594ff522
[gaim-migrate @ 2180]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2167
diff
changeset
|
5586 | data->gc = gc; |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
5587 | buf = g_strdup_printf(_("You have selected to open a Direct IM connection with %s."), who); |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
5588 | |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
5589 | gaim_request_action(gc, NULL, buf, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
5590 | _("Because this reveals your IP address, it " |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
5591 | "may be considered a privacy risk. Do you " |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
5592 | "wish to continue?"), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
5593 | 0, data, 2, |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
5594 | _("Connect"), G_CALLBACK(oscar_direct_im), |
|
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5497
diff
changeset
|
5595 | _("Cancel"), G_CALLBACK(oscar_cancel_direct_im)); |
|
5420
f5535376ef7d
[gaim-migrate @ 5799]
Mark Doliner <markdoliner@pidgin.im>
parents:
5411
diff
changeset
|
5596 | g_free(buf); |
| 2086 | 5597 | } |
| 5598 | ||
| 5575 | 5599 | static void oscar_set_permit_deny(GaimConnection *gc) { |
| 5600 | GaimAccount *account = gaim_connection_get_account(gc); | |
| 2086 | 5601 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5602 | #ifdef NOSSI |
| 4770 | 5603 | GSList *list, *g = gaim_blist_groups(), *g1; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5604 | char buf[MAXMSGLEN]; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5605 | int at; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5606 | |
| 5575 | 5607 | switch(account->perm_deny) { |
| 4687 | 5608 | case 1: |
| 5575 | 5609 | 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
|
5610 | break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5611 | case 2: |
| 5575 | 5612 | 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
|
5613 | break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5614 | case 3: |
| 5575 | 5615 | list = account->permit; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5616 | at = 0; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5617 | while (list) { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5618 | 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
|
5619 | list = list->next; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5620 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5621 | aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, buf); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5622 | break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5623 | case 4: |
| 5575 | 5624 | list = account->deny; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5625 | at = 0; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5626 | while (list) { |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5627 | 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
|
5628 | list = list->next; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5629 | } |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5630 | aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, buf); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5631 | break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5632 | case 5: |
| 4770 | 5633 | g1 = g; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5634 | at = 0; |
| 4770 | 5635 | while (g1) { |
| 5636 | list = gaim_blist_members((struct group *)g->data); | |
| 5637 | GSList list1 = list; | |
| 5638 | while (list1) { | |
| 5639 | struct buddy *b = list1->data; | |
| 5575 | 5640 | if(b->account == account) |
| 4349 | 5641 | at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", b->name); |
| 4770 | 5642 | list1 = list1->next; |
|
2995
33231d4b2cd3
[gaim-migrate @ 3008]
Mark Doliner <markdoliner@pidgin.im>
parents:
2994
diff
changeset
|
5643 | } |
| 4770 | 5644 | g_slist_free(list); |
| 5645 | g1 = g1->next; | |
| 4349 | 5646 | } |
| 4770 | 5647 | g_slist_free(g); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5648 | aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_PERMITADD, buf); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5649 | break; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5650 | default: |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5651 | break; |
| 2086 | 5652 | } |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5653 | signoff_blocked(gc); |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5654 | #else |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5655 | if (od->sess->ssi.received_data) |
| 5575 | 5656 | aim_ssi_setpermdeny(od->sess, account->perm_deny, 0xffffffff); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5657 | #endif |
| 2086 | 5658 | } |
| 5659 | ||
| 5575 | 5660 | static void oscar_add_permit(GaimConnection *gc, const char *who) { |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5661 | #ifdef NOSSI |
| 4491 | 5662 | if (gc->account->permdeny == 3) |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5663 | oscar_set_permit_deny(gc); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5664 | #else |
| 2991 | 5665 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5666 | gaim_debug(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
|
5667 | if (od->sess->ssi.received_data) |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
5668 | aim_ssi_addpermit(od->sess, who); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5669 | #endif |
| 2086 | 5670 | } |
| 5671 | ||
| 5575 | 5672 | static void oscar_add_deny(GaimConnection *gc, const char *who) { |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5673 | #ifdef NOSSI |
| 4491 | 5674 | if (gc->account->permdeny == 4) |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5675 | oscar_set_permit_deny(gc); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5676 | #else |
| 2991 | 5677 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5678 | gaim_debug(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
|
5679 | if (od->sess->ssi.received_data) |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
5680 | aim_ssi_adddeny(od->sess, who); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5681 | #endif |
| 2086 | 5682 | } |
| 5683 | ||
| 5575 | 5684 | static void oscar_rem_permit(GaimConnection *gc, const char *who) { |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5685 | #ifdef NOSSI |
| 4491 | 5686 | if (gc->account->permdeny == 3) |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5687 | oscar_set_permit_deny(gc); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5688 | #else |
| 2991 | 5689 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5690 | gaim_debug(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
|
5691 | if (od->sess->ssi.received_data) |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
5692 | aim_ssi_delpermit(od->sess, who); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5693 | #endif |
| 2086 | 5694 | } |
| 5695 | ||
| 5575 | 5696 | static void oscar_rem_deny(GaimConnection *gc, const char *who) { |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5697 | #ifdef NOSSI |
| 4491 | 5698 | if (gc->account->permdeny == 4) |
|
4269
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5699 | oscar_set_permit_deny(gc); |
|
c716bd9eee3c
[gaim-migrate @ 4520]
Mark Doliner <markdoliner@pidgin.im>
parents:
4251
diff
changeset
|
5700 | #else |
| 2991 | 5701 | struct oscar_data *od = (struct oscar_data *)gc->proto_data; |
|
5219
49255563aa61
[gaim-migrate @ 5589]
Christian Hammond <chipx86@chipx86.com>
parents:
5211
diff
changeset
|
5702 | gaim_debug(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
|
5703 | if (od->sess->ssi.received_data) |
|
4889
9c81754db28e
[gaim-migrate @ 5219]
Mark Doliner <markdoliner@pidgin.im>
parents:
4870
diff
changeset
|
5704 | aim_ssi_deldeny(od->sess, who); |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4212
diff
changeset
|
5705 | #endif |
| 2086 | 5706 | } |
| 5707 | ||
| 5575 | 5708 | static GList *oscar_away_states(GaimConnection *gc) |
| 2086 | 5709 | { |
|
2501
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
5710 | struct oscar_data *od = gc->proto_data; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
5711 | GList *m = NULL; |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
5712 | |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
5713 | if (!od->icq) |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
5714 | return g_list_append(m, GAIM_AWAY_CUSTOM); |
|
5e1fa4926c93
[gaim-migrate @ 2514]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2432
diff
changeset
|
5715 | |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5716 | m = g_list_append(m, _("Online")); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5717 | m = g_list_append(m, _("Away")); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5718 | m = g_list_append(m, _("Do Not Disturb")); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5719 | m = g_list_append(m, _("Not Available")); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5720 | m = g_list_append(m, _("Occupied")); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5721 | m = g_list_append(m, _("Free For Chat")); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5722 | m = g_list_append(m, _("Invisible")); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5723 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5724 | return m; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5725 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5726 | |
| 5575 | 5727 | static GList *oscar_buddy_menu(GaimConnection *gc, const char *who) { |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5728 | struct oscar_data *od = gc->proto_data; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5729 | GList *m = NULL; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5730 | struct proto_buddy_menu *pbm; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5731 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5732 | if (od->icq) { |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
5733 | #if 0 |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5734 | pbm = g_new0(struct proto_buddy_menu, 1); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5735 | pbm->label = _("Get Status Msg"); |
|
4969
7e6577f9d4b6
[gaim-migrate @ 5303]
Mark Doliner <markdoliner@pidgin.im>
parents:
4965
diff
changeset
|
5736 | pbm->callback = oscar_get_icqstatusmsg; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5737 | pbm->gc = gc; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5738 | m = g_list_append(m, pbm); |
|
4624
8bf85f27e60c
[gaim-migrate @ 4915]
Mark Doliner <markdoliner@pidgin.im>
parents:
4617
diff
changeset
|
5739 | #endif |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5740 | } else { |
| 4687 | 5741 | struct buddy *b = gaim_find_buddy(gc->account, who); |
|
4356
d8654d54a777
[gaim-migrate @ 4622]
Mark Doliner <markdoliner@pidgin.im>
parents:
4355
diff
changeset
|
5742 | |
| 5575 | 5743 | if ((aim_sncmp(gaim_account_get_username(gaim_connection_get_account(gc)), who)) && GAIM_BUDDY_IS_ONLINE(b)) { |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5744 | pbm = g_new0(struct proto_buddy_menu, 1); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5745 | pbm->label = _("Direct IM"); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5746 | pbm->callback = oscar_ask_direct_im; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5747 | pbm->gc = gc; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5748 | m = g_list_append(m, pbm); |
|
4650
5b2338bb19fd
[gaim-migrate @ 4961]
Mark Doliner <markdoliner@pidgin.im>
parents:
4649
diff
changeset
|
5749 | |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5750 | pbm = g_new0(struct proto_buddy_menu, 1); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5751 | pbm->label = _("Send File"); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5752 | pbm->callback = oscar_ask_sendfile; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5753 | pbm->gc = gc; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5754 | m = g_list_append(m, pbm); |
|
4826
ce211ce6a336
[gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents:
4825
diff
changeset
|
5755 | #if 0 |
|
ce211ce6a336
[gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents:
4825
diff
changeset
|
5756 | pbm = g_new0(struct proto_buddy_menu, 1); |
|
ce211ce6a336
[gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents:
4825
diff
changeset
|
5757 | pbm->label = _("Get File"); |
|
ce211ce6a336
[gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents:
4825
diff
changeset
|
5758 | pbm->callback = oscar_ask_getfile; |
|
ce211ce6a336
[gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents:
4825
diff
changeset
|
5759 | pbm->gc = gc; |
|
ce211ce6a336
[gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents:
4825
diff
changeset
|
5760 | m = g_list_append(m, pbm); |
|
ce211ce6a336
[gaim-migrate @ 5151]
Mark Doliner <markdoliner@pidgin.im>
parents:
4825
diff
changeset
|
5761 | #endif |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5762 | } |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5763 | } |
|
5197
ab4d919050d7
[gaim-migrate @ 5563]
Mark Doliner <markdoliner@pidgin.im>
parents:
5167
diff
changeset
|
5764 | |
|
5131
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5765 | if (od->sess->ssi.received_data) { |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5766 | char *gname = aim_ssi_itemlist_findparentname(od->sess->ssi.local, who); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5767 | if (gname && aim_ssi_waitingforauth(od->sess->ssi.local, gname, who)) { |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5768 | pbm = g_new0(struct proto_buddy_menu, 1); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5769 | pbm->label = _("Re-request Authorization"); |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5770 | pbm->callback = gaim_auth_sendrequest; |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5771 | pbm->gc = gc; |
|
ce6d77bc4102
[gaim-migrate @ 5494]
Mark Doliner <markdoliner@pidgin.im>
parents:
5129
diff
changeset
|
5772 | m = g_list_append(m, pbm); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5773 | } |
| 4916 | 5774 | } |
| 5775 | ||
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5776 | return m; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5777 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5778 | |
| 5575 | 5779 | static void oscar_format_screenname(GaimConnection *gc, const char *nick) { |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5780 | struct oscar_data *od = gc->proto_data; |
| 5575 | 5781 | 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
|
5782 | if (!aim_getconn_type(od->sess, AIM_CONN_TYPE_AUTH)) { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5783 | od->setnick = TRUE; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5784 | od->newsn = g_strdup(nick); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5785 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5786 | } else { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5787 | 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
|
5788 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5789 | } else { |
|
5436
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5790 | gaim_notify_error(gc, NULL, _("The new formatting is invalid."), |
|
a0e0bacaa196
[gaim-migrate @ 5818]
Christian Hammond <chipx86@chipx86.com>
parents:
5435
diff
changeset
|
5791 | _("Screenname formatting can change only capitalization and whitespace.")); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5792 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5793 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5794 | |
| 5575 | 5795 | static void oscar_show_format_screenname(GaimConnection *gc) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5796 | { |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
5797 | gaim_request_input(gc, NULL, _("New screenname formatting:"), NULL, |
| 5575 | 5798 | gaim_connection_get_display_name(gc), FALSE, |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
5799 | _("OK"), G_CALLBACK(oscar_format_screenname), |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
5800 | _("Cancel"), NULL, |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
5801 | gc); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5802 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5803 | |
| 5575 | 5804 | static void oscar_confirm_account(GaimConnection *gc) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5805 | { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5806 | struct oscar_data *od = gc->proto_data; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5807 | 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
|
5808 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5809 | if (conn) { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5810 | aim_admin_reqconfirm(od->sess, conn); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5811 | } else { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5812 | od->conf = TRUE; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5813 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5814 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5815 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5816 | |
| 5575 | 5817 | static void oscar_show_email(GaimConnection *gc) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5818 | { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5819 | struct oscar_data *od = gc->proto_data; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5820 | 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
|
5821 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5822 | if (conn) { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5823 | aim_admin_getinfo(od->sess, conn, 0x11); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5824 | } else { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5825 | od->reqemail = TRUE; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5826 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5827 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5828 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5829 | |
| 5575 | 5830 | static void oscar_change_email(GaimConnection *gc, const char *email) |
|
2768
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5831 | { |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5832 | struct oscar_data *od = gc->proto_data; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5833 | 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
|
5834 | |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5835 | if (conn) { |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5836 | aim_admin_setemail(od->sess, conn, email); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5837 | } else { |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5838 | od->setemail = TRUE; |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5839 | od->email = g_strdup(email); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5840 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH); |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5841 | } |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5842 | } |
|
908aa476ee73
[gaim-migrate @ 2781]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2762
diff
changeset
|
5843 | |
| 5575 | 5844 | static void oscar_show_change_email(GaimConnection *gc) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5845 | { |
|
5493
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
5846 | gaim_request_input(gc, NULL, _("Change Address To:"), NULL, NULL, FALSE, |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
5847 | _("OK"), G_CALLBACK(oscar_change_email), |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
5848 | _("Cancel"), NULL, |
|
f30de3b116ea
[gaim-migrate @ 5889]
Christian Hammond <chipx86@chipx86.com>
parents:
5436
diff
changeset
|
5849 | gc); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5850 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5851 | |
| 5575 | 5852 | static void oscar_show_awaitingauth(GaimConnection *gc) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5853 | { |
| 2979 | 5854 | struct oscar_data *od = gc->proto_data; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5855 | gchar *nombre, *text, *tmp; |
| 4785 | 5856 | GaimBlistNode *gnode,*bnode; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5857 | int num=0; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5858 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5859 | text = g_strdup(_("You are awaiting authorization from the following buddies:<BR>")); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5860 | |
| 4785 | 5861 | for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) { |
| 5862 | struct group *group = (struct group *)gnode; | |
| 5863 | if(!GAIM_BLIST_NODE_IS_GROUP(gnode)) | |
| 5864 | continue; | |
| 5865 | for (bnode = gnode->child; bnode; bnode = bnode->next) { | |
| 5866 | struct buddy *buddy = (struct buddy *)bnode; | |
| 5867 | if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) | |
| 5868 | continue; | |
| 4491 | 5869 | if (buddy->account == gc->account && aim_ssi_waitingforauth(od->sess->ssi.local, group->name, buddy->name)) { |
| 4687 | 5870 | if (gaim_get_buddy_alias_only(buddy)) |
| 5871 | nombre = g_strdup_printf(" %s (%s)", buddy->name, gaim_get_buddy_alias_only(buddy)); | |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5872 | else |
|
4337
f74d112ccb7c
[gaim-migrate @ 4601]
Mark Doliner <markdoliner@pidgin.im>
parents:
4336
diff
changeset
|
5873 | nombre = g_strdup_printf(" %s", buddy->name); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5874 | tmp = g_strdup_printf("%s<BR>%s", text, nombre); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5875 | g_free(text); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5876 | text = tmp; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5877 | g_free(nombre); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5878 | num++; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5879 | } |
| 2979 | 5880 | } |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5881 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5882 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5883 | if (!num) { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5884 | tmp = g_strdup_printf("%s<BR>%s", text, _("<i>you are not waiting for authorization</i>")); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5885 | g_free(text); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5886 | text = tmp; |
| 2979 | 5887 | } |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5888 | |
| 4959 | 5889 | tmp = g_strdup_printf(_("%s<BR><BR>You can re-request authorization from these buddies by right-clicking on them and clicking \"Re-request authorization.\""), text); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5890 | g_free(text); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5891 | text = tmp; |
| 5575 | 5892 | g_show_info_text(gc, gaim_account_get_username(gaim_connection_get_account(gc)), 2, text, NULL); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5893 | g_free(text); |
| 2979 | 5894 | } |
| 5895 | ||
| 5575 | 5896 | static void oscar_show_chpassurl(GaimConnection *gc) |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5897 | { |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5898 | struct oscar_data *od = gc->proto_data; |
| 5575 | 5899 | gchar *substituted = gaim_strreplace(od->sess->authinfo->chpassurl, "%s", gaim_account_get_username(gaim_connection_get_account(gc))); |
|
5517
1d7b99ac846c
[gaim-migrate @ 5916]
Mark Doliner <markdoliner@pidgin.im>
parents:
5498
diff
changeset
|
5900 | open_url(NULL, substituted); |
|
1d7b99ac846c
[gaim-migrate @ 5916]
Mark Doliner <markdoliner@pidgin.im>
parents:
5498
diff
changeset
|
5901 | g_free(substituted); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5902 | } |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5903 | |
| 5575 | 5904 | static GList *oscar_actions(GaimConnection *gc) |
| 2086 | 5905 | { |
| 5906 | struct oscar_data *od = gc->proto_data; | |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5907 | struct proto_actions_menu *pam; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5908 | GList *m = NULL; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5909 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5910 | pam = g_new0(struct proto_actions_menu, 1); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5911 | pam->label = _("Set User Info"); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5912 | pam->callback = show_set_info; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5913 | pam->gc = gc; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5914 | m = g_list_append(m, pam); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5915 | |
|
5238
b2c65d7392e0
[gaim-migrate @ 5608]
Mark Doliner <markdoliner@pidgin.im>
parents:
5234
diff
changeset
|
5916 | pam = g_new0(struct proto_actions_menu, 1); |
|
b2c65d7392e0
[gaim-migrate @ 5608]
Mark Doliner <markdoliner@pidgin.im>
parents:
5234
diff
changeset
|
5917 | pam->label = _("Change Password"); |
|
b2c65d7392e0
[gaim-migrate @ 5608]
Mark Doliner <markdoliner@pidgin.im>
parents:
5234
diff
changeset
|
5918 | pam->callback = show_change_passwd; |
|
b2c65d7392e0
[gaim-migrate @ 5608]
Mark Doliner <markdoliner@pidgin.im>
parents:
5234
diff
changeset
|
5919 | pam->gc = gc; |
|
b2c65d7392e0
[gaim-migrate @ 5608]
Mark Doliner <markdoliner@pidgin.im>
parents:
5234
diff
changeset
|
5920 | m = g_list_append(m, pam); |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5921 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5922 | if (od->sess->authinfo->chpassurl) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5923 | pam = g_new0(struct proto_actions_menu, 1); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5924 | pam->label = _("Change Password (URL)"); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5925 | pam->callback = oscar_show_chpassurl; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5926 | pam->gc = gc; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5927 | m = g_list_append(m, pam); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5928 | } |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5929 | |
|
5238
b2c65d7392e0
[gaim-migrate @ 5608]
Mark Doliner <markdoliner@pidgin.im>
parents:
5234
diff
changeset
|
5930 | if (!od->icq) { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5931 | /* AIM actions */ |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5932 | m = g_list_append(m, NULL); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5933 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5934 | pam = g_new0(struct proto_actions_menu, 1); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5935 | pam->label = _("Format Screenname"); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5936 | pam->callback = oscar_show_format_screenname; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5937 | pam->gc = gc; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5938 | m = g_list_append(m, pam); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5939 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5940 | pam = g_new0(struct proto_actions_menu, 1); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5941 | pam->label = _("Confirm Account"); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5942 | pam->callback = oscar_confirm_account; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5943 | pam->gc = gc; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5944 | m = g_list_append(m, pam); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5945 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5946 | pam = g_new0(struct proto_actions_menu, 1); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5947 | pam->label = _("Display Current Registered Address"); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5948 | pam->callback = oscar_show_email; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5949 | pam->gc = gc; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5950 | m = g_list_append(m, pam); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5951 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5952 | pam = g_new0(struct proto_actions_menu, 1); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5953 | pam->label = _("Change Current Registered Address"); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5954 | pam->callback = oscar_show_change_email; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5955 | pam->gc = gc; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5956 | m = g_list_append(m, pam); |
| 2086 | 5957 | } |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5958 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5959 | m = g_list_append(m, NULL); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5960 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5961 | pam = g_new0(struct proto_actions_menu, 1); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5962 | pam->label = _("Show Buddies Awaiting Authorization"); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5963 | pam->callback = oscar_show_awaitingauth; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5964 | pam->gc = gc; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5965 | m = g_list_append(m, pam); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5966 | |
| 2086 | 5967 | m = g_list_append(m, NULL); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5968 | |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5969 | pam = g_new0(struct proto_actions_menu, 1); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5970 | pam->label = _("Search for Buddy by Email"); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5971 | pam->callback = show_find_email; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5972 | pam->gc = gc; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5973 | m = g_list_append(m, pam); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5974 | |
|
4336
35df0f5d8651
[gaim-migrate @ 4600]
Mark Doliner <markdoliner@pidgin.im>
parents:
4333
diff
changeset
|
5975 | /* pam = g_new0(struct proto_actions_menu, 1); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5976 | pam->label = _("Search for Buddy by Information"); |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5977 | pam->callback = show_find_info; |
|
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4317
diff
changeset
|
5978 | pam->gc = gc; |
|
4336
35df0f5d8651
[gaim-migrate @ 4600]
Mark Doliner <markdoliner@pidgin.im>
parents:
4333
diff
changeset
|
5979 | m = g_list_append(m, pam); */ |
| 2086 | 5980 | |
| 5981 | return m; | |
| 5982 | } | |
| 5983 | ||
| 5575 | 5984 | static void oscar_change_passwd(GaimConnection *gc, const char *old, const char *new) |
| 2086 | 5985 | { |
| 5986 | struct oscar_data *od = gc->proto_data; | |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5987 | |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5988 | if (od->icq) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5989 | aim_icq_changepasswd(od->sess, new); |
| 2086 | 5990 | } else { |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5991 | 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
|
5992 | if (conn) { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5993 | aim_admin_changepasswd(od->sess, conn, new, old); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5994 | } else { |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5995 | od->chpass = TRUE; |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5996 | od->oldp = g_strdup(old); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5997 | od->newp = g_strdup(new); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5998 | aim_reqservice(od->sess, od->conn, AIM_CONN_TYPE_AUTH); |
|
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4608
diff
changeset
|
5999 | } |
| 2086 | 6000 | } |
| 6001 | } | |
| 6002 | ||
| 5575 | 6003 | static void oscar_convo_closed(GaimConnection *gc, char *who) |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6004 | { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6005 | struct oscar_data *od = gc->proto_data; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6006 | struct direct_im *dim = find_direct_im(od, who); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6007 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6008 | if (!dim) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6009 | return; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6010 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6011 | od->direct_ims = g_slist_remove(od->direct_ims, dim); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6012 | gaim_input_remove(dim->watcher); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6013 | aim_conn_kill(od->sess, &dim->conn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6014 | g_free(dim); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6015 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2235
diff
changeset
|
6016 | |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6017 | static GaimPluginProtocolInfo prpl_info = |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6018 | { |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6019 | GAIM_PROTO_OSCAR, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6020 | OPT_PROTO_MAIL_CHECK | OPT_PROTO_BUDDY_ICON | OPT_PROTO_IM_IMAGE, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6021 | NULL, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6022 | NULL, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6023 | oscar_list_icon, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6024 | oscar_list_emblems, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6025 | oscar_status_text, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6026 | oscar_tooltip_text, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6027 | oscar_away_states, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6028 | oscar_actions, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6029 | oscar_buddy_menu, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6030 | oscar_chat_info, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6031 | oscar_login, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6032 | oscar_close, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6033 | oscar_send_im, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6034 | oscar_set_info, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6035 | oscar_send_typing, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6036 | oscar_get_info, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6037 | oscar_set_away, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6038 | oscar_get_away, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6039 | oscar_set_dir, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6040 | NULL, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6041 | oscar_dir_search, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6042 | oscar_set_idle, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6043 | oscar_change_passwd, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6044 | oscar_add_buddy, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6045 | oscar_add_buddies, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6046 | oscar_remove_buddy, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6047 | oscar_remove_buddies, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6048 | oscar_add_permit, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6049 | oscar_add_deny, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6050 | oscar_rem_permit, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6051 | oscar_rem_deny, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6052 | oscar_set_permit_deny, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6053 | oscar_warn, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6054 | oscar_join_chat, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6055 | oscar_chat_invite, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6056 | oscar_chat_leave, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6057 | NULL, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6058 | oscar_chat_send, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6059 | oscar_keepalive, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6060 | NULL, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6061 | NULL, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6062 | NULL, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6063 | #ifndef NOSSI |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6064 | oscar_alias_buddy, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6065 | oscar_move_buddy, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6066 | oscar_rename_group, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6067 | #else |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6068 | NULL, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6069 | NULL, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6070 | NULL, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6071 | #endif |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6072 | NULL, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6073 | oscar_convo_closed, |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6074 | NULL |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6075 | }; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6076 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6077 | static GaimPluginInfo info = |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6078 | { |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6079 | 2, /**< api_version */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6080 | GAIM_PLUGIN_PROTOCOL, /**< type */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6081 | NULL, /**< ui_requirement */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6082 | 0, /**< flags */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6083 | NULL, /**< dependencies */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6084 | GAIM_PRIORITY_DEFAULT, /**< priority */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6085 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6086 | "prpl-oscar", /**< id */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6087 | "AIM/ICQ", /**< name */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6088 | VERSION, /**< version */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6089 | /** summary */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6090 | N_("AIM/ICQ Protocol Plugin"), |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6091 | /** description */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6092 | N_("AIM/ICQ Protocol Plugin"), |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6093 | NULL, /**< author */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6094 | WEBSITE, /**< homepage */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6095 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6096 | NULL, /**< load */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6097 | NULL, /**< unload */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6098 | NULL, /**< destroy */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6099 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6100 | NULL, /**< ui_info */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6101 | &prpl_info /**< extra_info */ |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6102 | }; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6103 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6104 | static void |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6105 | __init_plugin(GaimPlugin *plugin) |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6106 | { |
| 3572 | 6107 | struct proto_user_opt *puo; |
| 2086 | 6108 | |
| 3572 | 6109 | puo = g_new0(struct proto_user_opt, 1); |
| 5388 | 6110 | puo->label = g_strdup(_("Auth Host:")); |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6111 | puo->def = g_strdup("login.oscar.aol.com"); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6112 | puo->pos = USEROPT_AUTH; |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6113 | prpl_info.user_opts = g_list_append(prpl_info.user_opts, puo); |
| 3572 | 6114 | |
| 6115 | puo = g_new0(struct proto_user_opt, 1); | |
| 5388 | 6116 | puo->label = g_strdup(_("Auth Port:")); |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6117 | puo->def = g_strdup("5190"); |
|
5208
63f8248c74ed
[gaim-migrate @ 5576]
Christian Hammond <chipx86@chipx86.com>
parents:
5205
diff
changeset
|
6118 | puo->pos = USEROPT_AUTHPORT; |
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6119 | prpl_info.user_opts = g_list_append(prpl_info.user_opts, puo); |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6120 | |
|
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6121 | my_protocol = plugin; |
| 2086 | 6122 | } |
| 6123 | ||
|
5205
242b8aa81328
[gaim-migrate @ 5573]
Christian Hammond <chipx86@chipx86.com>
parents:
5197
diff
changeset
|
6124 | GAIM_INIT_PLUGIN(oscar, __init_plugin, info); |